首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

如若监听一个线程是否完成了呢

2013-04-20 
如果监听一个线程是否完成了呢如果监听一个线程是否完成了呢,我需要做一个并发线程,比如有5个线程,都执行

如果监听一个线程是否完成了呢
如果监听一个线程是否完成了呢,我需要做一个并发线程,比如有5个线程,都执行完了才能知道结果,我如果才能知道这个5个同时运行的线程完成了呢
[解决办法]
可以利用回调,五个线程共享一个变量,每一个结束+1,当共享变量为一时,就是都完成了···
个人观点
[解决办法]
Thread的join方法可能适合楼主(对楼主真正需求不是很清楚)
或可以用java.util.concurrent.CountDownLatch

[解决办法]
 一般情况下我们创建线程是实现Runnable接口。像你这种可以实现Callable<T> 运行方法完成时返回一个Object 你可以类型转换。你运行它的时候还能获得一个Future 可以通过里面的isDone和get方法满足你的要求。具体方法名什么的看下API
[解决办法]

引用:
如果监听一个线程是否完成了呢,我需要做一个并发线程,比如有5个线程,都执行完了才能知道结果,我如果才能知道这个5个同时运行的线程完成了呢

===============================
正常来说,线程执行完成了,线程状态应该处于中断状态。
[解决办法]

class A implements Callable<T>{
   public Integer call() throws Exception {
}
}

[解决办法]
引用:
Java code
?



12345

class A implements Callable<T>{    public Integer call() throws Exception { } }


不好意思没写完。



public class Test {
public static void main(String[] args){
A a=new A();
FutureTask<Integer> task=new FutureTask<Integer>(a);
Thread thread=new Thread(task);
thread.start();
task.get();
}
}

class A implements Callable<T> {

@Override
public T call() throws Exception {
  return null;
}
}



根据task去判断线程是否执行完毕,FutureTask有isDone()方法返回boolean类型。判断线程是否执行完毕,FutureTask 的get方法如果线程没有结束,方法将阻塞。

热点排行