Fra*_*fka 9 java multithreading callable futuretask threadpool
我对执行者服务很陌生.喜欢自己做所有事情,但我认为是时候相信这些服务了.
我想交Executer一个Runnable.执行者FutureTask把它包裹起来并交给我.现在我调用poll done()方法.但是我希望在done()方法返回true 时得到通知.
有一种get()方法可以阻塞直到Runnable完成,但是我需要为每个作业添加一个额外的线程,只是为了看它何时完成.
我可以给我的执行者一些额外的工作,Callable以获得有关完成任务的通知吗?
怎么去这里?我可以在run方法的末尾添加一些代码,但后来done()可能仍然是假的...
ExecutorCompletionService
http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ExecutorCompletionService.html
如果您可以具体假设使用 java.util.concurrent.ThreadPoolExecutor,那么您可以使用它的钩子方法;afterexecute() 和 beforeexecute()。
http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html
它们不像 ListenableFuture 那样优雅,但如果您只需要给定执行器实例的一种类型的“侦听器”,那么它可能是一个足够的解决方案。
| 归档时间: |
|
| 查看次数: |
7025 次 |
| 最近记录: |