protected void finalize() { done.reset(); for (int i = 0; i < threads.length; i++) { threads[i].interrupt(); done.workerBegin(); // threads[i].destroy(); } done.waitDone(); }
public synchronized Runnable getAssignment() { try { while (!assignments.iterator().hasNext()) { wait(); } Runnable r = (Runnable) assignments.iterator().next(); assignments.remove(r); return r; } catch (InterruptedException e) { done.workerEnd(); return null; } }
public void complete() { done.waitBegin(); done.waitDone(); }
// 分配线程 public synchronized void assign(Runnable r) { done.workerBegin(); assignments.add(r); notify(); }