【问题标题】:Threadsafe within a thread?线程内的线程安全?
【发布时间】:2014-04-27 15:20:46
【问题描述】:

我正在用 Java 编写一个程序来模拟分子算法。由于分子算法固有地使用并发性(您可以根据需要进行尽可能多的化学反应,只要您有化学物质和浓度来提供它们),它需要我使用并发性。

但是,我最近发现我用于图形结构的包不是线程安全的。我为每个线程设置了一个 ArrayList 图表。在计算过程中,一个线程修改了它自己的 ArrayList 和其中的一些图,但是我没有代码允许一个线程修改 ArrayList 或任何其他线程的图,直到它从其子线程接收到两个 ArrayList。

为了实现这一点,我正在使用 ForkJoinPool (我对此的理解是,如果我错了,请纠正我,是将任务划分为两个线程,将任务划分为两个线程......当计算在叶线程中完成时,它们返回到它们的父线程,依此类推,直到根子线程返回到它,如果是 ForkJoinTask,则根返回结果)。

不用说,我想要发生的一个值得注意的例外是钢结构。因此,我的问题是,除了 worksteel 和返回父线程的子线程之外,如果没有线程与任何其他线程交互,是否可以在并发应用程序中使用非线程安全对象?

【问题讨论】:

  • 帖子就像代码,需要缩进。
  • 线程安全是线程安全的。如果要修改共享数据,则必须进行同步。也许你想要一个线程安全的 List 版本。
  • 是的。只要一个非线程安全的对象只被一个线程使用,就没有问题。每个服务器应用程序都使用许多线程,并且每个线程始终使用 ArrayList、StringBuilder 和许多非线程安全对象。
  • 优秀。但是,如果发生工作钢化,它仍然是线程安全的吗?

标签: java multithreading concurrency thread-safety forkjoinpool


【解决方案1】:

我想知道这个过程是否适合映射/减少。算法需要并发;物理和化学提出了划分问题的方法。这可能是一种获得安全、高效并发的简单方法。

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多