多线程:线程池异步计算,2个线程,1个计算10的阶乘,一个计算20的阶乘并返回

Callable接口:与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。

ExecutorService:线程池类

<T> Future<T> submit(Callable<T> task):获取线程池中的某一个线程对象,并执行线程中的call()方法

Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用

使用线程池中线程对象的步骤:

1创建线程池对象

2创建Callable接口子类对象

3提交Callable接口子类对象

4关闭线程池

代码展示:

import java.util.concurrent.Callable;

public class MyCallable implements Callable<Long> {
private int num;

public MyCallable(int num) {
this.num = num;
}

public Long call() throws Exception {
long count=1;
for (int i=1;i<=num;i++){
count=count*i;
}
return count;
}
}
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Demo03 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建线程任务对象
MyCallable mc1=new MyCallable(10);
MyCallable mc2=new MyCallable(20);
//获取线程池
ExecutorService es= Executors.newFixedThreadPool(2);
//执行线程任务
Future f1=es.submit(mc1);
Future f2=es.submit(mc2);
System.out.println(f1.get()+"..."+f2.get());
}
}
原文地址:https://www.cnblogs.com/nbkls/p/12773597.html