题目:先子线程打印10次,然后回到主线程打印5次,如此循环20次。
目的:理解并实践线程同步的方法。
package com.mythread.test;
public class ExeThread2 {
private static boolean main = false;
public static void main(String argv[]) {
Thread t = new Thread(new Runnable() {
public void run() {
for(int i = 0; i < 20; i++) {
synchronized(ExeThread2.class) {
if(main) {
try{
ExeThread2.class.wait();
} catch(Exception e) {
e.printStackTrace();
}
}
for (int j = 0; j < 10; j++) {
System.out.println(Thread.currentThread().getName() + " i=" + i + " j=" + j);
}
main = true;
ExeThread2.class.notify();
}
}
}
});
t.start();
for(int i = 0; i < 20; i++) {
synchronized(ExeThread2.class) {
if(!main) {
try{
ExeThread2.class.wait();
} catch(Exception e) {
e.printStackTrace();
}
}
for (int j = 0; j < 5; j++) {
System.out.println(Thread.currentThread().getName() + " i=" + i + " j=" + j);
}
main = false;
ExeThread2.class.notify();
}
}
}
}
Thread-0 i=0 j=0
Thread-0 i=0 j=1
Thread-0 i=0 j=2
Thread-0 i=0 j=3
Thread-0 i=0 j=4
Thread-0 i=0 j=5
Thread-0 i=0 j=6
Thread-0 i=0 j=7
Thread-0 i=0 j=8
Thread-0 i=0 j=9
main i=0 j=0
main i=0 j=1
main i=0 j=2
main i=0 j=3
main i=0 j=4
Thread-0 i=1 j=0
Thread-0 i=1 j=1
Thread-0 i=1 j=2
Thread-0 i=1 j=3
Thread-0 i=1 j=4
Thread-0 i=1 j=5
Thread-0 i=1 j=6
Thread-0 i=1 j=7
Thread-0 i=1 j=8
Thread-0 i=1 j=9
main i=1 j=0
main i=1 j=1
main i=1 j=2
main i=1 j=3
main i=1 j=4
.............