java 有返回值任务_Java多线程中任务有返回值的情形

㊣java编程核心第2版多线程的图书

75.5元

包邮

(需用券)

去购买 >

13a2c4f75993d0bddbcf850c218f5add.png

1. 应用场景

由于Runnable接口中的run()方法无返回值,当我们需要执行的任务需要返回一个对象的话,Runnable接口虽然可以用过定义实例变量来完成同样的效果,但并非是最佳的选择。此时,应该定义实现了Callable接口的类,借助于Java的线程池来达到我们的目的。需要注意的是,这里只能调用ExecutorService对象的submit(Callable callable)方法,该方法将返回一个Future对象,通过调用该对象的get()方法拿到我们需要的返回值。

/**

* IntegerSquare类用于计算并返回输入的整数的平方

*/

public class IntegerSquare implements Callable {

private int num; //进行平方运算的数

public IntegerSqure (int num) {

this.num = num;

}

@Override

public Integer call() throws Exception {

return num * num; //返回num的平方

}

}

/**

* 使用CachedThreadPool进行测试

*/

public class IntegerSqureDemo {

public static void main (String[] args) {

ExecutorService threadPool = Executors.newCachedThreadPool();

List> resultList = new ArrayList<>();

for (int i = 0; i < 100; ++i) {

Future result = threadPool.submit(new IntegerSquare(i)); //submit方法返回Future对象

resultList.add(result);

}

for (Future res

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值