日期:2014-05-20  浏览次数:20760 次

如果监听一个线程是否完成了呢
如果监听一个线程是否完成了呢,我需要做一个并发线程,比如有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方法如果线程没有结束,方法将阻塞。