一.一道经典的面试题
- 关于线程的同步通信和互斥,我们可以用一道面试题来说明和检测,如下
子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 我们先实现子线程和主线程循环的代码
new Thread(new Runnable() {
@Override
public void run() {
for(int i=1;i<=50;i++) {
for(int j=1;j<=10;j++) {
System.out.println("sub thread sequece of "+j+",loop of "+i);
}
}
}
}).start();
for(int i=1;i<=50;i++) {
for(int j=1;j<=100;j++) {
System.out.println("main thread sequece of "+j+",loop of "+i);
}
}
- 显然此时连互斥还没实现
- 于是我们加上线程互斥
new Thread(new Runnable() {
@Override
public void run() {
for(int i=1;i<=50;i++) {
synchronized (TraditionalThreadCommunicationTest.class) {
for(int j=1;j<=10;j++) {
System.out.println("sub thread