线程的简单运用(二)
Java5之前使用线程 是实现Runnable接口,没有返回值。
现在可以实现Callable接口,实现有返回值的线程。
以下是使用实例:
业务代码:
import java.util.concurrent.Callable;
public class MyCallable implements Callable{
private String oid;
MyCallable(String oid) {
this.oid = oid;
}
@Override
public Object call() throws Exception {
return oid+"任务返回的内容";
}
}
测试代码:
import java.util.concurrent.*;
//Java线程:有返回值的线程
public class Test {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建一个线程池
ExecutorService pool = Executors.newFixedThreadPool(1);
//创建两个有返回值的任务
Callable c1 = new MyCallable("A");
Callable c2 = new MyCallable("B");
//执行任务并获取Future对象
Future f1 = pool.submit(c1);
Future f2 = pool.submit(c2);
//从Future对象上获取任务的返回值,并输出到控制台
System.out.println(">>>"+f1.get().toString());
System.out.println(">>>"+f2.get().toString());
//关闭线程池
pool.shutdown();
}
}
运行测试代码打印结果为:
>>>A任务返回的内容
>>>B任务返回的内容