Java 的“Parallel.For”?

2023-11-22

我想知道是否有并行.For相当于 Java 的 .net 版本吗?

如果有人可以提供一个例子吗?谢谢!


我想最接近的事情是:

ExecutorService exec = Executors.newFixedThreadPool(SOME_NUM_OF_THREADS);
try {
    for (final Object o : list) {
        exec.submit(new Runnable() {
            @Override
            public void run() {
                // do stuff with o.
            }
        });
    }
} finally {
    exec.shutdown();
}

根据 TheLQ 的评论,您可以将 SUM_NUM_THREADS 设置为Runtime.getRuntime().availableProcessors();

编辑:决定添加基本的“Parallel.For”实现

public class Parallel {
    private static final int NUM_CORES = Runtime.getRuntime().availableProcessors();

    private static final ExecutorService forPool = Executors.newFixedThreadPool(NUM_CORES * 2, new NamedThreadFactory("Parallel.For"));

    public static <T> void For(final Iterable<T> elements, final Operation<T> operation) {
        try {
            // invokeAll blocks for us until all submitted tasks in the call complete
            forPool.invokeAll(createCallables(elements, operation));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static <T> Collection<Callable<Void>> createCallables(final Iterable<T> elements, final Operation<T> operation) {
        List<Callable<Void>> callables = new LinkedList<Callable<Void>>();
        for (final T elem : elements) {
            callables.add(new Callable<Void>() {
                @Override
                public Void call() {
                    operation.perform(elem);
                    return null;
                }
            });
        }

        return callables;
    }

    public static interface Operation<T> {
        public void perform(T pParameter);
    }
}

Parallel.For 的用法示例

// Collection of items to process in parallel
Collection<Integer> elems = new LinkedList<Integer>();
for (int i = 0; i < 40; ++i) {
    elems.add(i);
}
Parallel.For(elems, 
 // The operation to perform with each item
 new Parallel.Operation<Integer>() {
    public void perform(Integer param) {
        System.out.println(param);
    };
});

我想这个实现确实更类似于并行.ForEach

Edit如果有人感兴趣的话,我将其放在 GitHub 上。GitHub 上的 Parallel For

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 的“Parallel.For”? 的相关文章

  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • 是否可以手动检查 LocateRegistry 是否存在?

    I 已经发现 https stackoverflow com a 8338852 897090一种安全的方式获得LocateRegistry 即使注册表尚不存在 Registry registry null try registry Loc
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 如何使用eclipse调试JSP tomcat服务?

    我想使用 Eclipse IDE 调试器来调试单独运行的 JSP Struts Tomcat Hibernate 应用程序堆栈 如何设置 java JVM 和 eclipse 以便设置断点 监视变量值并查看当前正在执行的代码 我刚刚用谷歌搜
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个
  • Android ClassNotFoundException:在路径上找不到类

    10 22 15 29 40 897 E AndroidRuntime 2561 FATAL EXCEPTION main 10 22 15 29 40 897 E AndroidRuntime 2561 java lang Runtime

随机推荐

  • Eclipse 上的 PyDev Jython 交互式控制台创建失败

    为什么在 Eclipse 中调用我的 Jython 交互式控制台时可能无法创建 按照 Jython 手册中的 在 IDE 中使用 Jython 说明进行操作 http www jython org jythonbook en 1 0 Jyt
  • 有没有正确的方法来处理重叠的 NSView 兄弟姐妹?

    我正在开发一个 Cocoa 应用程序 并且遇到了一种情况 我希望两个 NSView 对象重叠 我有一个父 NSView 其中包含两个子视图 NSView A 和 NSView B 每个子视图都可以有自己的多个子视图 有没有适当的方法来处理这
  • jQuery SlideDown 不流畅

    我有这个小的 jQuery SlideDown 效果http jsfiddle net Gg4eP 2 但动画不流畅 我做错了什么 谢谢你的时间 您只需为每个可扩展 div 添加宽度即可 http jsfiddle net BpMam 解释
  • 对象检测 API 错误:“ImportError:无法导入名称anchor_generator_pb2”

    我正在尝试获取 Tensorflow 的新功能物体检测API在职的 我已经按照安装说明 但是当运行命令时 python object detection builders model builder test py 我收到以下错误 from
  • swfupload 不再在 IE 下工作

    http demo swfupload org v250beta2 simpledemo index php似乎不再在 IE 中工作了 有解决办法吗 我得到一个红十字 并且 按钮 不可点击 我运行的是 IE 8 我可以在 Windows 7
  • 格式“%d”需要“int”类型的参数,但参数 2 的类型为“int *”

    每次我在 hackerrank 上提交程序时都会出现以下错误 solution c In function main solution c 22 14 warning format d expects argument of type in
  • 箭头键在输入和文本区域中不起作用

    我的网络应用程序中有一个简单的文本区域和输入 由于某种原因 我无法使用箭头键返回输入的文本 输入光标不会向后移动 不过 我可以使用 ctrl a 或者用鼠标单击我要编辑的位置 这很令人困惑 我没有在代码中的任何关键事件中使用 e preve
  • Bash here 文档没有产生任何输出,知道为什么吗?

    在我的带有 Lubuntu 13 04 的 Acer 725 上 这个小脚本 bin bash echo echo lt
  • Django 过滤器与获取模型

    我是 Django 的新手 想了解过滤器与 get 之间的区别 Get Entry objects get id exact 14 Filter Entry objects filter id exact 14 上述声明有什么区别 提前致谢
  • Haskell - for 循环

    如果我想表达类似的东西 只是一个简单的例子 int a 0 for int x 0 x lt n x 1 a 1 a 我应该在哈斯克尔做什么 因为它没有变量概念 可能是错的 参见 Haskell 有变量吗 有几种选择 首先 您可以用朴素递归
  • 套接字异常:“端点映射器没有更多可用端点”

    我正在使用winsock 和C 来设置服务器应用程序 我遇到的问题是调用listen导致第一次机会异常 我想通常这些可以被忽略 但我发现其他人也有同样的问题 它导致应用程序偶尔挂起 任何帮助将不胜感激 第一个机会例外是 0x 1234567
  • 实现哈希表

    我正在尝试创建一个有效的查找表C 我有一个整数作为键和一个可变长度char 作为值 我看过uthash 但这需要固定长度char 价值 如果我把这个数字设得很大 那么我就使用了太多的内存 struct my struct int key c
  • ASP.Net MVC 的计划控件 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 是否有适用于 ASP Net MVC 的任何商业或其他
  • MAMP Config 帮助,显示 PHP 错误

    我正在 Snow Leopard 上运行最新版本的 MAMP 我的 php ini 文件已配置为显示错误 显示错误 打开 phpinfo 页面显示错误报告状态 为打开状态 我已经多次重新启动我的网络服务器 我用Google搜索过 没有发现类
  • delete[] 如何“知道”操作数数组的大小?

    Foo set new Foo 100 delete set 您没有将数组的边界传递给delete 但这些信息存储在哪里 是否标准化 当您在堆上分配内存时 分配器将跟踪您分配了多少内存 它通常存储在您分配的内存之前的 头 段中 这样 当需要
  • 编写一个有 2 个线程交替打印的程序

    我最近在接受采访时被问到这个问题 编写一个具有两个线程 A 和 B 的程序 其中 A 打印 1 B 打印 2 依此类推 直到达到 50 我们该如何去做呢 分配的本质是演示一个线程如何向另一个线程发出信号 最常见的方法是使用阻塞队列 但这里信
  • 在Python 2.7中模拟按键事件

    我想要做的是在 Windows 上按 Python 脚本级别的任意键盘键 我尝试过 SendKeys 但它仅适用于 python 2 6 我尝试过的其他方法包括 import win32com client win32com client
  • 来自 ADFS 服务器的 URL 重定向

    我在 ASP net Web 应用程序中使用 ADFS 进行身份验证 STS服务器将浏览器重定向到https test contoso com 首先将客户端重定向到 STS 时 STS 不允许任何返回 URL 参数 是否可以将浏览器重定向到
  • 整数除法的行为是什么?

    例如 int result result 125 100 or result 43 100 结果总是分区的底线吗 定义的行为是什么 结果总是分区的底线吗 定义的行为是什么 不完全的 它向 0 舍入 而不是向下舍入 6 5 5 乘法运算符 6
  • Java 的“Parallel.For”?

    我想知道是否有并行 For相当于 Java 的 net 版本吗 如果有人可以提供一个例子吗 谢谢 我想最接近的事情是 ExecutorService exec Executors newFixedThreadPool SOME NUM OF