【发布时间】:2011-04-14 07:23:45
【问题描述】:
我对以下内容感到困惑:
要在Java程序中使用线程,最简单的方法是扩展Thread类并实现runnable接口(或简单地实现runnable)。
开始线程的执行。我们必须调用线程的方法start(),然后调用线程的方法run()。于是线程开始了。
start() 方法(除非我错了)必须为每个线程准确且仅调用一次。因此,线程实例不能被重用,除非 run 方法本身以某种方式运行在一些有助于自定义实现线程重用的无限循环中。
现在的javadoc
link text
说
调用执行将重用以前构造的线程(如果可用)
我不明白这是如何实现的。 我在 executor 方法的 execute 方法中提供了我的自定义线程,例如
ExecutorService myCachedPool = Executors.newCachedThreadPool();
myCachedPool.execute(new Runnable(){public void run(){
//do something time consuming
}});
我委托给执行器框架的这个自定义线程如何被重用?
是否允许 Executor 调用方法 start() 超过 1 次,而我们不能在我们的程序中?
我是不是误会了什么?
谢谢。
【问题讨论】:
标签: java multithreading threadpool executorservice executors