线程结束监听器。爪哇

2024-01-12

Java中是否有监听器来处理某些线程已结束的情况? 像这样的事情:

Future<String> test = workerPool.submit(new TestCalalble());
test.addActionListener(new ActionListener()               
   {                                                         
    public void actionEnd(ActionEvent e)               
    {                                                        
        txt1.setText("Button1 clicked");                        
    }                                                        
   });

我知道,不可能这样处理,但我希望在某个线程结束时收到通知。

通常我用这个 Timer 类来检查每个 Future 的状态。但这不是很好的方法。 谢谢


竣工服务 http://download.oracle.com/javase/6/docs/api/java/util/concurrent/CompletionService.html您可以使用。

CompletionService<Result> ecs
       = new ExecutorCompletionService<Result>(e);
ecs.submit(new TestCallable());
if (ecs.take().get() != null) {
    // on finish
}

另一种选择是使用聆听未来 https://github.com/google/guava/wiki/ListenableFutureExplained来自番石榴。

代码示例:

ListenableFuture future = Futures.makeListenable(test);
future.addListener(new Runnable() {
 public void run() {
   System.out.println("Operation Complete.");
   try {
     System.out.println("Result: " + future.get());
   } catch (Exception e) {
     System.out.println("Error: " + e.message());
   }
 }
}, exec);

就我个人而言,我更喜欢 Guava 解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程结束监听器。爪哇 的相关文章

随机推荐