多线程实现方式三:实现Callable接口
- 1、实现Callable接口,需要有返回值
- 2、重写call()方法,并抛出异常
- 3、创建目标对象
- 4、创建执行服务 定义线程池 ExecutorService ser = Executors.newFixedThreadPool(3);
- 5、提交执行:Future r1=ser.submit(t1);
- 6、获取结果: Boolean rs1 = r1.get();
- 7、关闭服务: ser.shutdown();
示例代码:
public class ThreadTest5 implements Callable<Boolean>{
public static void main(String[] args) throws InterruptedException, ExecutionException {
ThreadTest5 t1=new ThreadTest5();
ThreadTest5 t2=new ThreadTest5();
ThreadTest5 t3=new ThreadTest5();
//创建执行服务 定义线程池
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> r1=ser.submit(t1);
Future<Boolean> r2=ser.submit(t2);
Future<Boolean> r3=ser.submit(t3);
//获取结果
Boolean rs1 = r1.get();
Boolean rs2 = r2.get();
Boolean rs3 = r3.get();
System.out.println(rs1);
System.out.println(rs2);
System.out.println(rs3);
//关闭服务
ser.shutdown();
}
@Override
public Boolean call() throws Exception {
for (int i = 0; i <20; i++) {
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
return true;
}
}
运行结果: