Runnble接口的run()方法不能返回操作结果。为了解决这一问题提供了新接口java.util.concurrent.Callable接口
@FunctionalInterface
public interface Callable<V>{
public V call()throws Exception;
}
在FutureTask类下有个构造方法:public FutureTask(Callable<V> callable)
范例:
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyThread implements Callable<String> {
private int ticket = 6;
@Override
public String call() throws Exception {
for (int i = 0; i < 7; i++) {
if (this.ticket > 0) {
System.out.println("Ticket=" + this.ticket--);
}
}
return "卖完了";
}
}
public class Demo {
public static void main(String[] args) throws Exception {
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread();
FutureTask<String> ft1 = new FutureTask<>(mt1);
FutureTask<String> ft2 = new FutureTask<>(mt2);
new Thread(ft1).start();
System.out.println(ft1.get());
new Thread(ft2).start();
System.out.println(ft2.get());
}
}
