说到线程,大家都会想到同步问题。说到同步,就会想到Synchronized。
接下来,我跟大家分享一下我个人对Synchronized的用法理解。
先看看下面一个例子(在不用Synchronized之前) 输出0到5 三次
public class TestThread {
public static void main(String args[]) {
for(int i=0;i<3;i++){
new MyThread1().start();
}
}
}
class MyThread1 extends Thread {
public void run() {
Param.instance().num();
}
}
class Param {
private static Param instance;
public static Param instance() {
if(instance==null){
instance= new Param();
}
return instance;
}
public void num() {
for(int i=0;i<6;i++){
System.out.print(i);
}
System.out.println();
}
}输出结果
000112132425
345
345
由此看出线程是交错运行的,结果导致输出错乱。这并不是我们要的结果。
我们试着在方法上 加上 Synchronized 以让其正常有序的打印
结果很出呼意料
00011122345
2345
345
本文出自 “spring研究者” 博客,请务必保留此出处http://springxml.blog.51cto.com/4900689/1537373
关于Synchronized的用法,布布扣,bubuko.com
原文地址:http://springxml.blog.51cto.com/4900689/1537373