java for循环 多线程_使用多线程并行化Java中的for循环

有两种方法可以使它并行运行:Streams和Executors.

使用流

您可以使用并行流,将其余部分留给jvm.在这种情况下,您无法控制何时发生的事情.另一方面,您的代码将易于阅读和维护:

sellerDataList.stream().forEach(sellerNames -> {

Stream stream = StreamSupport.stream(sellerNames.spliterator(), true); // true means use parallel stream

stream.forEach(sellerName -> {

getSellerAddress(sellerName);

});

});

使用ExecutorService

假设您需要5个线程,并且您希望能够等到任务完成.然后你可以使用一个带有5个线程的固定线程池并使用Future-s,这样你就可以等到它们完成了.

final ExecutorService executor = Executors.newFixedThreadPool(5); // it's just an arbitrary number

final List> futures = new ArrayList<>();

for (SellerNames sellerNames : sellerDataList) {

for (final String sellerName : sellerNames) {

Future> future = executor.submit(() -> {

getSellerAddress(sellerName);

});

futures.add(future);

}

}

try {

for (Future> future : futures) {

future.get(); // do anything you need, e.g. isDone(), ...

}

} catch (InterruptedException | ExecutionException e) {

e.printStackTrace();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值