下面是我对管理队列中可运行变量的第一个猜测。他们一个接一个地被处决。此时只有一个问题:
-
如何定期检查上一个线程是否仍在运行,以免开始执行列表中的第二个线程?
Queue<Object> qe=new LinkedList<Object>(); for (int i = 0; i < 5; i++) { RunnableObject ro = new RunnableObject(); qe.add(ro); } for (int i = 0; i < qe.size(); i++) { qe.peek().start; qe.poll(); }
我会使用旨在执行此操作的ExecutorService。 在 2004 年的 Java 5.0 中添加了它,它包含一个队列和一个线程池。
ExecutorService es = Executors.newSingleThreadExecutor();
es.sumbit(new RunnableObject()); // submit Runnable not Threads.
这将重用相同的线程,从而减少开销,并确保你永远不会使用超过您设置的数量的线程,在本例中为 1,但对于固定大小的线程池,可以说是 5。
我建议您阅读高级并发对象教程