如何获得线程结束消息
加入主线程启动一个子线程,当子线程结束时,主线程能够立刻被通知,请问有什么方法
[解决办法]
使用 Google Guava 提供的 ListeningExecutorService 启动线程会返回一个 ListenableFuture<?>。
ListenableFuture<XX> future = ...;Futures.addCallback(future, new FutureCallback<XX> { public void onSuccess(XX result) { xx(result); } public void onFailure(Throwable t) { reportError(t); } });
[解决办法]
public interface ThreadListener { public void threadStart(Object source); public void threadFinished(Object source);}public class MyThread extends Thread { public ThreadListener listener; public void setThreadListener(ThreadListener tl){ this.listener = tl; } public void run(){ if(this.listener != null) this.listener.threadStart(this); //...... if(this.listener != null) this.listener.threadFinished(this); }}public class Main implements ThreadListener { public void threadStart(Object source){ System.out.println("线程开始了"); } public void threadFinished(Object source){ System.out.println("线程结束了"); } private void test(){ Thread[] threads = new Thread[10]; for(int i=0; i<threads.length; i++){ MyThread thread = new MyThread(); thread.setThreadListener(this); thread.start(); threads[i] = thread; } for(Thread thead : threads){ thread.join(); } } public static void main(String[] args){ Test t = new Test(); t.test(); }}
[解决办法]