这是我的班级
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
循环都是并行运行的。如何在多线程环境中将这些循环作为线程安全运行一个同步块。我给出了我的代码的错误是什么?
谢谢!
答案 0 :(得分:4)
同步块可防止其他线程在同一对象上输入相同或另一个同步块。这里有一个同步块,只有一个线程进入它。所以所有其他线程都可以执行他们想要的任何内容。