gpt4 book ai didi

Java多线程初学者问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:45 25 4
gpt4 key购买 nike

我正在开发一个科学应用程序,它具有可以并行进行的易于分离的部分。因此,我将这些部分作为独立线程编写到每个运行中,尽管这似乎不是将事物分离到线程中的标准原因(即,不阻止某些退出命令等)。

几个问题:

这真的能在标准多核台式机上给我带来任何好处吗?也就是说,如果我有当前的 JVM,线程实际上会在单独的内核上运行吗?还是我必须做其他事情?

我几乎没有被所有线程读取(尽管从未写入)的对象。潜在的问题?那些问题的解决方案?

对于实际的集群,您能否推荐将线程分配到各个节点的框架,这样我就不必自己管理(好吧,如果存在的话)?澄清:我的意思是,要么自动将线程转换为单个节点的任务,要么使整个集群看起来像一个 JVM(即,它可以将线程发送到它可以访问的任何处理器)或其他任何东西。基本上,在集群上以有用的方式实现并行化,因为我已将其构建到算法中,并且我的工作管理最少。

奖励:大部分评估包括集合比较(例如,并集、交集、包含)以及从键映射到相关集的一些映射。我在 FORTRAN、C 和 C++ 方面的经验有限(第一个学期是科学计算学期,另外两个学期是 10 年前的 HS AP 类(class))——如果我把我的并行化增益结合起来,我会发现什么样的速度/易用性Java 前端到使用其中一种语言的算法后端,以我的经验水平,使用这些语言实现这些操作可能会遇到什么样的麻烦?

最佳答案

  • 是的,使用独立线程将在普通 JVM 中使用多个内核,而无需您做任何工作。

  • 如果任何东西只被读取,那么被多个线程读取应该没问题。如果您可以使相关对象不可变(保证它们永远不会被更改),那就更好了

  • 我不确定您正在考虑哪种类型的集群,但您可能想看看 Hadoop .请注意,分布式计算分配的是任务而不是线程(通常情况下,无论如何)。

关于Java多线程初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com