インターネットで次の例を見ました。
public class TwoThreads {
public static class Thread1 extends Thread {
public void run() {
System.out.println("A");
System.out.println("B");
}
}
public static class Thread2 extends Thread {
public void run() {
System.out.println("1");
System.out.println("2");
}
}
public static void main(String[] args) {
new Thread1().start();
new Thread2().start();
}
}
私の質問は:
「A」が「B」の前に出力され、「1」が「2」の前に出力されることは保証されていますが、「1」が別のスレッドによって 2 回連続して出力される可能性はありますか?少なくとも 3 つのスレッド (1 つのメインと 2 つの作成済み) があります。スケジューラーが 1 つのスレッドを実行すると想像できますか? new Thread1().start(); System.out.println("1"); の直後にあきらめました。次に、Thread1().start(); で別の脅威を再度実行します。「1」を再度出力しますか?
私は NetBeans IDE を使用しています。そのようなプログラムを実行すると、常に同じ最初の結果が得られるようです。そのため、キャッシュに何かがあるようです。私の理解では、揮発性変数を宣言することでそれを処理していますが、ここでどのように行うことができますか? そうでない場合、キャッシュの解決策は何ですか?
今日のコンピュータのプロセッサでは、ほとんどの場合 2 つのプロセッサが使用されていますが、ネット上の多くのマルチスレッド プログラムでは 2 つ以上のスレッドが使用されています。コンパイルに関しては、このプロセスは重く遅くなりませんか?