我正在用Java编写一个程序来模拟分子算法。由于分子算法固有地使用并发(你可以根据需要进行尽可能多的化学反应,只要你有化学物质和浓度供应它们),它需要我使用并发。
但是,我最近发现我用于图形结构的包不是线程安全的。我为每个线程设置了一个图表ArrayList。在计算过程中,一个线程修改了自己的ArrayList和其中的一些图形,但我没有代码允许一个线程修改ArrayList或任何其他线程的图形,直到它从其子线程收到两个ArrayLists。
为了做到这一点,我正在使用ForkJoinPool(我对此的理解是,如果我错了,请纠正我,是它将任务分成两个线程,将任务分成两个线程......当在叶子线程中完成计算时,它们返回到它们的父线程,依此类推,直到根子节点返回到它,并且如果ForkJoinTask返回结果,则根节点。
毋庸置疑,我想要发生的明显例外是工作。因此,我的问题是,如果除了workteeling和子线程返回父线程之外,如果没有线程与任何其他线程交互,是否可以在并发应用程序中使用nonthreadsafe对象?
答案 0 :(得分:0)
我想知道这个过程是否能很好地映射/减少。算法需要并发;物理和化学提出了解决问题的方法。这可能是获得安全,高效并发的简单方法。