版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyh1234/article/details/45338649
在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用。
package test;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSynchronized {
public static void main(String[] args) {
call();
}
public synchronized static void num() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
}
public static void call() {
for (int i = 0; i < 5; i++) {
new Thread(new Runnable() {
@Override
public void run() {
num();
}
}).start();
}
}
}
输出结果(每隔3秒输出一次)
2015-04-28 16:54:01.947
2015-04-28 16:54:04.949
2015-04-28 16:54:07.949
2015-04-28 16:54:10.949
2015-04-28 16:54:13.950
如果去掉 num 方法之前的 synchronized 关键字,输出结果(同时输出)
2015-04-28 16:57:15.073
2015-04-28 16:57:15.073
2015-04-28 16:57:15.073
2015-04-28 16:57:15.073
2015-04-28 16:57:15.073