java并行计算中的多线程数据竞争

时间:2017-11-01 12:44:16

标签: java multithreading computation

嘿伙计们,我正在做本科数学研究,我写了一个java程序来做大量的计算。首先,我需要找出所有4个元素组合,比如2500(可能更多达300 * 300)个元素,然后我需要测试每个候选者的商数列表(它'如果我的考生粘贴了所有的quotientGroup测试,那么它是我正在寻找的目标之一。但如果候选人未通过任何一项测试,我可以立即到那里测试下一位候选人。现在,尽管我的程序得到了正确的结果,但它需要很多时间。所以我试图使用多线程解决问题。

所以这是我的想法:我将我的quotientGroup列表分成4个单独的quotientGroup列表,并同时与我的候选人一起测试。为了避免数据竞争,我想我需要制作4份我的候选人,这并不可怕,因为每个候选人只包含4个元素。但问题是如果4个线程中的任何一个发现失败的测试让我们说反例,我需要关闭4个线程以避免不必要的进一步测试。但我怎么能实现这一目标呢?我可以创建一个名为success的全局布尔变量,然后如果4个线程中的任何一个找到一个计数器示例我会将此变量设置为false并且如果此全局变量为false,我还需要在每个线程中添加一个检查器然后我需要关闭线程。但是,我将在这个布尔变量上进行数据竞争,我的结果将是不准确的。我对吗?请给出一些建议,我是多线程的新手。

0 个答案:

没有答案