如何在Java中重用线程?

我正在构建一个控制台数独求解器,其主要目标是原始速度。

我现在有一个管理器线程,它启动WorkerThreads来计算每个单元的neibhbors。因此,现在为每个单元启动了一个WorkerThread。如何重用已完成工作的现有线程?

线程池模式似乎是解决方案,但我不知道该怎么做才能防止线程在工作完成后死亡。

ps :我不希望为这个特定任务获得太多性能,只是想在将其应用于代码的更复杂部分之前尝试多线程的工作原理。

谢谢


答案 1

看看Java SE提供的java.util.concurrent API。您可以使用 Executors#newFixedThreadPool() 创建线程池,也可以使用 ExecutorService 方法提交任务。无需重新发明您自己的线程池。另请参阅有关该主题的 Sun 教程


答案 2

当使用线程池(java.util.concurrent)时,您从未实际初始化过线程 - 而是将Runnables传递给线程池。您不必担心线程生命周期,只需在可运行中执行任何您需要执行的工作,并在完成后将其退出即可。


推荐