Java 8: Parallel FOR loop

后端 未结 5 1431
独厮守ぢ
独厮守ぢ 2020-12-07 22:40

I have heard Java 8 provides a lot of utilities regarding concurrent computing. Therefore I am wondering what is the simplest way to parallelise the given for loop?

5条回答
  •  南笙
    南笙 (楼主)
    2020-12-07 23:07

    Read up on streams, they're all the new rage.

    Pay especially close attention to the bit about parallelism:

    "Processing elements with an explicit for-loop is inherently serial. Streams facilitate parallel execution by reframing the computation as a pipeline of aggregate operations, rather than as imperative operations on each individual element. All streams operations can execute either in serial or in parallel."

    So to recap, there are no parallel for-loops, they're inherently serial. Streams however can do the job. Take a look at the following code:

        Set servers = getServers();
        Map serverData = new ConcurrentHashMap<>();
    
        servers.parallelStream().forEach((server) -> {
            serverData.put(server.getIdentifier(), server.fetchData());
        });
    

提交回复
热议问题