2
说我使用的是什么是在Java线程池中的每个工作线程上调用自定义关闭方法的优雅方法?
ExecutorService ex = Executors.newFixedThreadPool(nrofthreads);
旋转了一些工作,当它完成等待。
但是,我在工作线程中有相同的Threadlocal对象,在完成批处理时需要关闭它们。 因此,我希望能够在由线程池创建的所有工作线程上调用自定义关闭方法。
什么是最优雅的方式来做到这一点?
现在因为我使用的是黑客:
for(int i =0 ; i<20; i++){ //make sure to touch all threads with 20 runs..
ex.execute(new Runnable(){
public void run(){
tearDownThreadLocals();
}
});
}
ex.shutdown();
但看起来并不格外健壮的我;-)
感谢 GJ
你想要把:try {r.run(); } finally {tearDownThreadLocals(); }以确保它始终被调用,无论运行如何? – Mike 2010-03-05 11:10:53
@Mike:是的,很好的地方。 – axtavt 2010-03-05 11:13:19