线程结束时候的,感知它的死亡
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 结束了");
}
}
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 结束了");
}
}
相关文章推荐
- JAVA里面如何让一个线程死亡或结束
- JAVA里面如何让一个线程死亡或结束
- JAVA里面如何让一个线程死亡或结束
- 线程的状态及线程结束时候资源的回收
- 如何让一个线程死亡或结束
- 线程的状态及线程结束时候资源的回收
- JAVA里面如何让一个线程死亡或结束
- JAVA里面如何让一个线程死亡或结束
- 线程结束时候资源的回收
- JAVA里面如何让一个线程死亡或结束
- Android java 中如何优雅的结束线程
- ScrollView在初始化滚动条在某一位置的时候为什么非得开一个线程?还有就是scrollTo与smoothScrollTo的区别是什么?
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- 如何在调用线程的时候传递参数
- Android java 中如何优雅的结束线程
- NStimer 在滚动ScrollView的时候停止,在新线程中使用NSTimer
- THRDTERM-----干净地结束一个线程
- C# 用IsAlive来确定线程结束时间
- 《C++并发编程实战》思考1---线程的结束
- 用signal结束多个线程