实现多线程方法无非就是继承Thread类或者实现Runnable接口,重写的run方法是没有返回值的。。。
Java 并发包提供了可以带有返回值的接口,Callable方法执行后可以返回Future对象,就可以从该对象里获取到线程返回值。
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Test {
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(2);
MyCallable c1 = new MyCallable("A");
MyCallable c2 = new MyCallable("B");
Future<Object> f1 = pool.submit(c1);
Future<Object> f2 = pool.submit(c2);
System.out.println("---->" + f1.get().toString());
System.out.println("---->" + f2.get().toString());
pool.shutdown();
}
}
class MyCallable implements Callable<Object> {
private String oid;
public MyCallable(String oid) {
super();
this.oid = oid;
}
@Override
public Object call() throws Exception {
return oid + "任务返回的内容";
}
}