似乎有许多不同的方式可以创建线程(Runnable 与 Thread 类)以及 ThreadPools。
在效率方面有什么不同吗?哪些是在 Java 中创建和池化线程的最有效(就性能而言)技术?
如果您需要处理许多短而频繁的请求,最好使用 a ThreadPool
,这样您就可以重用已经打开的线程并为它们分配Runnable
任务。
但是,当您需要为单个任务操作启动一个线程或实例化一个运行所有应用程序时间或长时间特定时间的守护线程时,最好创建一个线程并在您不再需要它时终止它.
归根结底,它们都依赖于相同Thread
的基于底层的机制来实际完成工作。这意味着如果您问“启动单个线程的最有效方法是什么?” 答案是,创建一个Thread
对象并调用它,因为任何其他方法在最终创建一个对象并调用它start()
之前都会采取一些其他步骤。Thread
start()
这并不意味着这是产生线程的最佳方式,它只是意味着它是从 Java 代码中实现它的最底层方式。创建线程的其他方法为您提供的是不同类型的基础架构来管理底层Thread
s,因此您选择的方法应该取决于您需要的基础架构的数量和类型。