同期ブロックや揮発性変数がない場合、あるスレッドによって実行された書き込みが別のスレッドから見えるのはいつですか? 簡単なクイックソートの例を次に示します。
int middle = partitionForTheFirstTime(array);
Thread t = new Thread(new Quicksorter(array, 0, middle - 1));
Thread u = new Thread(new Quicksorter(array, middle + 1, array.size - 1));
t.start()
u.start();
t.join();
u.join();
(簡単にするために、2 つの「ワーカー スレッド」は追加のスレッドを生成しないと仮定します。)
2 つのスレッドを結合すると、現在のスレッドがすべての副作用を確認できることが保証されますか?
関連して、最初のパーティショニングの前にスレッドを作成するとどうなりますか?
Quicksorter a = new Quicksorter();
Quicksorter b = new Quicksorter();
Thread t = new Thread(a);
Thread u = new Thread(b);
int middle = partitionForTheFirstTime(array);
a.setParameters(array, 0, middle - 1);
b.setParameters(array, middle + 1, array.size - 1);
t.start()
u.start();
t.join();
u.join();
2 つのスレッドは、によって引き起こされる副作用を確認できpartitionForTheFirstTime()
ますか? つまり、スレッドを作成すると、事前発生の関係が発生しますか、それともスレッドを開始しますか?