日期:2014-05-20  浏览次数:20615 次

java中synchronized锁对象的问题
各位帮忙看下程序,我的要求是让子线程执行10次,再让主线程执行10次,为什么程序运行结果是子线程和主线程交替执行

public class TestThread {

public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
synchronized (TestThread.class) {
new Thread(new Runner()).start();
}
synchronized (TestThread.class) {
for (int j = 0; j < 10; j++) {
System.out.println("主线程: " + i);
}
}
}
}
}

class Runner implements Runnable {

@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println("子线程执行了: " + i);
}
}
}
非常感谢!

------解决方案--------------------
如果要做到2个线程严格交替执行,线程1运行10步,线程2运行10步,线程1,线程2.........
必须采用类似于信号灯的概念来指示当前让谁执行.