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;
import java.util.concurrent.FutureTask;
public class Test {
public static void main(String[] args) {
ExecutorService executor = Executors.newCachedThreadPool();
// Task task = new Task();
// Future<Integer> result = executor.submit(task);
//
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
//
// System.out.println("���߳���ִ������");
//
// try {
// System.out.println("task����" + result.get());
// } catch (InterruptedException e) {
// e.printStackTrace();
// } catch (ExecutionException e) {
// e.printStackTrace();
// }
//
// System.out.println("��������ִ�����");
Task task2 = new Task();
FutureTask<Integer> futureTask = new FutureTask<Integer>(task2) {
@Override
protected void done() {
// TODO Auto-generated method stub
super.done();
System.out.println("done," + Thread.currentThread().getId());
try {
System.out.println("result," + get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
executor.submit(futureTask);
executor.shutdown();
System.out.println("main done," + Thread.currentThread().getId());
{
FutureTask<Void> futureTask2 = new FutureTask<Void>(new Callable<Void>() {
@Override
public Void call() throws Exception {
// TODO Auto-generated method stub
return null;
}
});
FutureTask<Integer> futureTask3 = new FutureTask<Integer>(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
}, 1);
}
}
}
class Task implements Callable<Integer> {
@Override
public Integer call() throws Exception {
Thread.sleep(3000);
int sum = 0;
for (int i = 0; i < 100; i++)
sum += i;
System.out.println("call," + Thread.currentThread().getId());
return sum;
}
}