public final boolean close() {
		synchronized (this.taskPool) {
			if (this.closed) {
				return true;
			}
			this.closed = true;
			this.taskPool.notifyAll();
			synchronized (this.runningTaskList) {
				for (final Thread t : this.runningTaskList) {
					t.interrupt();
				}
			}
			if (runningTaskList.contains(Thread.currentThread()))
				return false;
			while (this.runningTasks > 0) {
				try {
					this.taskPool.wait();
				} catch (final InterruptedException e) {
					this.master.interrupt();
				}
			}
		}
		return true;
	}