私は、各スレッドが 2 つの数値の GCD を計算し、数値と GCD を に格納し、すべてのスレッドが終了TreeMap
した後に を出力するマルチスレッド プログラムに取り組んでいます。TreeMap
同時に 1 つのスレッドだけがデータを保存するようにするには、どのような方法を使用すればよいですか? また、印刷のTreeMap
準備ができたときに、最後のスレッドを使用して印刷するにはどうすればよいですか?
for (int i = 0; i < myList.size(); ++i) {
for (int j = i + 1; j < myList.size(); ++j) {
modulus1 = myList.get(i);
modulus2 = myList.get(j);
pool.execute(new ThreadProcessRunnable(modulus1, modulus2, myMap));
}
}
public void run() {
ThreadProcess process = null;
try {
// Only one thread should execute the following code
for (Map.Entry<BigInteger, ArrayList<BigInteger>> entry : myMap.entrySet()) {
System.out.println("key ->" + entry.getKey() + ", value->" + entry.getValue());
}
} catch (Exception e) {
System.err.println("Exception ERROR");
}