作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我刚刚开始研究 Java 的 Executors
类和 newCachedThreadPool( )
方法。根据 API,生成的线程池会为新任务重用现有的 Thread
对象。
我有点困惑这是如何实现的,因为我在 Thread
API 中找不到任何方法可以让您设置现有 Thread
对象的行为.
例如,您可以从 Runnable
对象创建一个 new Thread
,这使得 Thread
调用Runnable
的 run( )
方法。但是,Thread
API 中没有将 Runnable
作为参数的 setter 方法。
如果有任何指点,我将不胜感激。
最佳答案
基本上想象池中的每个线程都这样做:
public void run() {
while(true) {
if(tasks available) {
Runnable task = taskqueue.dequeue();
task.run();
} else {
// wait or whatever
}
}
}
关于java - 缓存线程池如何重用现有线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699335/
我是一名优秀的程序员,十分优秀!