ここに私のクラスがあります
public class ThreadTest {
public static void main(String[] args) {
ThreadTest threadTest = new ThreadTest();
threadTest.m1();
synchronized (threadTest) {
threadTest.m2();
}
System.out.println("End of main thread");
}
public void m1() {
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + " : " + i);
}
System.out.println("end of mythread");
}
});
myThread.start();
}
public void m2() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + " : " + i);
}
}
}
コードをsynchronized
ブロック内に配置しましたが、正しく動作していないようで、両方のfor
ループが並行して実行されます。同期ブロックを使用してマルチスレッド環境でこれらのループをスレッドセーフとして実行するにはどうすればよいですか。指定されたコードの間違いはどこにありますか?
ありがとう!