java基础--29.线程池的实现方式2-结合Callable对象
Posted 大数据小小罗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础--29.线程池的实现方式2-结合Callable对象相关的知识,希望对你有一定的参考价值。
创建Callable对象
注意:
Callable 是带泛型的接口
这里执行的泛型其实是 call() 方法的返回值类型
/*
* 线程求和案例:实现 1~x 之间的累加求和
*/
public class MyCallable implements Callable
private Integer number = new Integer(0);
public MyCallable(int number)
this.number = number;
@Override
public Object call() throws Exception
int sum = 0;
for (int x = 1; x <= number; x++)
sum += x;
return sum;
实现线程池的代码--方法2
/*
* A:创建一个线程池对象,控制要创建几个线程对象
* static ExecutorService newFixedThreadPool(int nThreads)
*
* B:这种线程池的线程可以执行:
* 可以执行Callable对象代表的线程
* 做一个类实现Callable接口
*
* C:调用如下方法:
* <T> Future<T> submit(Callable<T> task)
*
* D:执行完之后想结束线程,可以吗?
* 可以
*
* E:利用返回值获取执行结果
*
*/
public class ExecutorsDemo
public static void main(String[] args) throws InterruptedException, ExecutionException
//1.创建线程池对象
ExecutorService pool = Executors.newFixedThreadPool(2);
//2.可以执行Runnable对象或者Callable对象代表的线程
//利用Future对象接收返回值
Future<Integer> f1 = pool.submit(new MyCallable(100));
Future<Integer> f2 = pool.submit(new MyCallable(200));
//3.通过Future对象的get()方法获取结果,并输出结果
System.out.println(f1.get());
System.out.println(f2.get());
//4.运行结束后,结束线程池
pool.shutdown();
运行结果:
5050
20100
以上是关于java基础--29.线程池的实现方式2-结合Callable对象的主要内容,如果未能解决你的问题,请参考以下文章