您的位置:首页 > 其它

线程结束时候的,感知它的死亡

2015-02-08 19:15 218 查看
package com.success.web.servlet;

import java.util.EventListener;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

/**

* 线程结束时候的,感知它的死亡

*

* @author 东方不败

*

*/

public class ThreadCallback implements Runnable, Callable<String>,

EventListener {

@Override

public String call() throws Exception {

System.out.println("dsadsdwocao");

return "over";

}

@Override

public void run() {

for (int i = 0; i < 5; i++) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(i);

}

}

public static void main(String[] args) throws Exception {

System.out.println("main 来了");

ThreadCallback ss = new ThreadCallback();

ExecutorService s = Executors.newSingleThreadExecutor();

final Future<String> f = s.submit(new Callable<String>() {

@Override

public String call() throws Exception {

System.out.println("线程死亡倒计时");

for (int i = 0; i < 5; i++) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(i);

}

System.out.println("线程死亡了");

return "yes";

}

});

new Thread() {

public void run() {

try {

if (f.get() != null) {

System.out.println("我知道你死了");

}

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ExecutionException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

};

}.start();

System.out.println("main 结束了");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: