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();

}

你可能感兴趣的:(java,for循环,多线程)