public static synchronized void synPrint(String str){
for( int i=0; i<10; i++){
try {
System.out.print(str+" =>"+i+"\n");
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void synTest(){
new Thread(new Runnable() {
public void run() {
for( int i=0; i<3; i++){
final int n = i;
new Thread(new Runnable() {
public void run() {
System.out.print("+++++++++ thread1 "+n+" ++++++++\n");
synPrint("thread1:"+n);
}
}).start();
}
System.out.print("======== thread1 end =========\n");
}
}).start();
new Thread(new Runnable() {
public void run() {
for(int i=0; i<3; i++){
System.out.print("+++++++++ thread2 "+i+" ++++++++\n");
synPrint("thread2:"+i);
}
System.out.print("======== thread2 end =========\n");
}
}).start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
同步结果:
+++++++++ thread2 0 ++++++++
+++++++++ thread1 1 ++++++++
thread2:0 =>0
+++++++++ thread1 0 ++++++++
======== thread1 end =========
+++++++++ thread1 2 ++++++++
thread2:0 =>1
thread2:0 =>2
thread2:0 =>3
thread2:0 =>4
thread2:0 =>5
thread2:0 =>6
thread2:0 =>7
thread2:0 =>8
thread2:0 =>9
thread1:2 =>0
+++++++++ thread2 1 ++++++++
thread1:2 =>1
thread1:2 =>2
thread1:2 =>3
thread1:2 =>4
thread1:2 =>5
thread1:2 =>6
thread1:2 =>7
thread1:2 =>8
thread1:2 =>9
thread1:1 =>0
thread1:1 =>1
thread1:1 =>2
thread1:1 =>3
thread1:1 =>4
thread1:1 =>5
thread1:1 =>6
thread1:1 =>7
thread1:1 =>8
thread1:1 =>9
thread1:0 =>0
thread1:0 =>1
thread1:0 =>2
thread1:0 =>3
thread1:0 =>4
thread1:0 =>5
thread1:0 =>6
thread1:0 =>7
thread1:0 =>8
thread1:0 =>9
thread2:1 =>0
thread2:1 =>1
thread2:1 =>2
thread2:1 =>3
thread2:1 =>4
thread2:1 =>5
thread2:1 =>6
thread2:1 =>7
thread2:1 =>8
thread2:1 =>9
+++++++++ thread2 2 ++++++++
thread2:2 =>0
thread2:2 =>1
thread2:2 =>2
thread2:2 =>3
thread2:2 =>4
thread2:2 =>5
thread2:2 =>6
thread2:2 =>7
thread2:2 =>8
thread2:2 =>9
======== thread2 end =========
不同步结果:
+++++++++ thread2 0 ++++++++
======== thread1 end =========
+++++++++ thread1 0 ++++++++
thread2:0 =>0
thread1:0 =>0
+++++++++ thread1 2 ++++++++
+++++++++ thread1 1 ++++++++
thread1:2 =>0
thread1:1 =>0
thread1:2 =>1
thread1:1 =>1
thread2:0 =>1
thread1:0 =>1
thread1:1 =>2
thread1:0 =>2
thread2:0 =>2
thread1:2 =>2
thread1:1 =>3
thread2:0 =>3
thread1:0 =>3
thread1:2 =>3
thread1:0 =>4
thread1:2 =>4
thread1:1 =>4
thread2:0 =>4
thread1:0 =>5
thread1:2 =>5
thread1:1 =>5
thread2:0 =>5
thread1:0 =>6
thread1:2 =>6
thread1:1 =>6
thread2:0 =>6
thread1:0 =>7
thread1:2 =>7
thread2:0 =>7
thread1:1 =>7
thread1:1 =>8
thread1:2 =>8
thread2:0 =>8
thread1:0 =>8
thread2:0 =>9
thread1:1 =>9
thread1:2 =>9
thread1:0 =>9
+++++++++ thread2 1 ++++++++
thread2:1 =>0
thread2:1 =>1
thread2:1 =>2
thread2:1 =>3
thread2:1 =>4
thread2:1 =>5
thread2:1 =>6
thread2:1 =>7
thread2:1 =>8
thread2:1 =>9
+++++++++ thread2 2 ++++++++
thread2:2 =>0
thread2:2 =>1
thread2:2 =>2
thread2:2 =>3
thread2:2 =>4
thread2:2 =>5
thread2:2 =>6
thread2:2 =>7
thread2:2 =>8
thread2:2 =>9
======== thread2 end =========