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

Posted nbkls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程:线程池异步计算,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());
}
}

 

以上是关于多线程:线程池异步计算,2个线程,1个计算10的阶乘,一个计算20的阶乘并返回的主要内容,如果未能解决你的问题,请参考以下文章

多线程到底该设置多少个线程?

c# socket多连接(如何达到10万个客户端)

.NET异步和多线程系列

线程Queue定时器进程池和线程池同步异步

你真的知道什么是多线程吗?为什么要学习多线程?

七个方面带你玩转Java线程池