【问题标题】:Java equivilant to pythons / haskells map() function with multiprocessing/multithreading? [duplicate]Java等效于具有多处理/多线程的python / haskell map()函数? [复制]
【发布时间】:2018-09-02 14:32:56
【问题描述】:

我知道有些问题与我的类似。但是,它们似乎非常过时(假设 JDK 7 等) 所以,我已经编写了一段时间的 python 并且不得不为大学学习 Java。 我知道there is a feature in Python,您可以在其中使用线程/进程池将值列表映射到函数。

from multiprocessing.dummy import Pool as ThreadPool 
pool = ThreadPool(4) 
results = pool.map(my_function, my_array)

我必须在大量文件上使用该函数,我必须使用 Java (10),我想使用多处理。 我的问题是:Java 有这样的特性吗?如果是这样,正确使用它的最佳做法是什么?

【问题讨论】:

  • @rocksportrocker 答案在做出时是有效的,现在 5 年后,还有其他可能性,比如 stream().parallel()...
  • 你可以使用并行流,也许(取决于任务,是否干扰等) - 但要小心:你说你想处理很多文件。并行磁盘访问只会使性能更差,而不是更好!
  • @GPI - 这并不意味着问题不是重复的。这意味着如果你想回答它,你应该去那里添加一个答案,而不是重复的问题。

标签: java python multithreading multiprocessing


【解决方案1】:

可以,可以使用parallelStream,例如将整数列表转换为字符串列表:

List<Integer> list = List.of(1, 2);

List<String> strings =
        list.parallelStream()
                .map(integer -> String.valueOf(integer)).collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2013-04-03
    • 1970-01-01
    • 2019-07-31
    • 2014-03-24
    • 2014-12-25
    相关资源
    最近更新 更多