私はこのコードを試していますが、得られた出力に少し混乱/驚いています。私はまだJavaに慣れていませんが、スレッドは通常同時に実行する必要があることを認識しています。ここでの「printB」スレッドは、実行を開始する前に「printA」スレッドを待機しているようです。私はプログラムを数回実行しました(両方のスレッドの結果の混合物、つまりa、a、b、a、b、a ...のようなものを取得することを望んでいますが、それでも同じ出力が得られます(つまり、「A」 「B」の前に最初に印刷されます)。なぜこれが起こっているのですか? また、コードを変更して正常に動作するようにするにはどうすればよいですか?
入力/提案は大歓迎です。ありがとう。
また、 extends Thread メソッドを使用して同じコードを試していますが、機能しません。
class PrintChars implements Runnable{
private char charToPrint;
private int times;
public PrintChars(char c, int t){
charToPrint = c;
times = t;
}
public void run(){
for (int i=0; i<times; i++)
System.out.println(charToPrint);
}
public static void main(String[] args){
PrintChars charA = new PrintChars('a', 7);
PrintChars charB = new PrintChars('b', 5);
Thread printA = new Thread(charA);
Thread printB = new Thread(charB);
printA.start();
printB.start();
}
}
以下の Thread メソッドを拡張します。
class PrintChars extends Thread {
private Char charToPrint;
private int times;
public PrintChars(char c, int t){
charToPrint = c;
times = t;
}
public void run (){
for(int i =0; i<times; i++)
System.out.println(charToPrint);
}
PrintChars printA = new PrintChars('a', 7);
PrintChars printB = new PrintChars('a', 5);
printA.start();
printB.start();
}