Synchronized的作用: 实现线程同步,让多个线程排队依次获取某个资源,保证数据不会出错。
synchronized到底锁定的是什么元素?
1、修饰方法
1.1 非静态方法:锁定的是方法的调用者
public class Test {
public static void main(String[] args) {
Data data = new Data();
//线程A
new Thread(()->{
data.func1();
},"A").start();
//线程B
new Thread(()->{
data.func2();
},"B").start();
}
}
class Data {
public void func1() {
try {
TimeUnit.SECONDS.sleep(3); //休眠三秒钟
} catch (InterruptedException e) {
e.printStackTrace();