java多线程笔记02 - Callable
Callable异步执行代码
package com.cdinit;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyThread implements Callable<String>{
@Override
public String call() throws Exception {
Thread.sleep(3000);
System.out.println("call...");
return "子线程来了...";
}
}
public class CallableTest {
public static void main(String[] arg) throws Exception{
// Callable接口的实现MyThread
// FutureTask实现了RunnableFuture接口,RunnableFuture继承了Runnable
// FutureTask 有接收Callable的构造方法
FutureTask<String> ft = new FutureTask<String>(new MyThread());
new Thread(ft,"T1").start();
new Thread(ft,"T2").start();
System.out.println(Thread.currentThread().getName()+"线程,主线程~~~");
String t1 = ft.get();
System.out.println("t1--->" + t1);
String t2 = ft.get();
System.out.println("t2--->" + t2);
}
}