我想创建一个 Java 队列,我将可运行对象推送到其中,并逐个执行它们.这是对的吗



下面是我对管理队列中可运行变量的第一个猜测。他们一个接一个地被处决。此时只有一个问题:

  1. 如何定期检查上一个线程是否仍在运行,以免开始执行列表中的第二个线程?

    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。

我建议您阅读高级并发对象教程

相关内容

  • 没有找到相关文章

最新更新