ここに私のコード(クラス)があります:
package table2thread;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Table2Thread extends Thread {
private int j;
private boolean flag;
Table2Thread(int j0) {
j = j0;
}
public void run() {
if (Thread.currentThread().getName().equals("Thread1")) {
for (int i = 1; i < 11; i++) {
System.out.println(j + "*" + i + "=" + j * i);
flag = true;
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Table2Thread.class.getName()).log(Level.SEVERE, null, ex);
}
}
} else if (Thread.currentThread().getName().equals("Thread1") && flag == true) {
for (int i = 1; i < 11; i++) {
System.out.println(j + "*" + i + "=" + j * i);
flag = false;
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Table2Thread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
これが私のメインクラスです:
public class Main {
public static void main(String[] args) {
Table2Thread a1 =new Table2Thread(3);
a1.setName("Thread1");
a1.start();
Table2Thread a2 =new Table2Thread(4);
a2.setName("Thread2");
a2.start();
}
}
一度に 1 つのスレッドだけが必要で、一意のスレッドだけが必要です。最初にa1、次にa2、次に再びa1とa2ですが、今コードを実行すると、最初にa1が開始し、次にa2が開始し、3〜4回インクリメントした後、a1が開始し、再びa1が開始し、次にa2が開始し、再びa2が開始します。いろいろ試してみましたが、初心者なのでうまくいきません。
助けてください