一、synchronized锁
synchronized是java的一个关键字,它能够将代码块锁起来,一次只能允许一个线程进入被锁住的代码块。(需要掌握多线程的基本知识)
类锁与对象锁属于synchronized锁。
二、类锁与对象锁
1、我们首先需要知道什么是类锁?什么是对象锁?
简单来讲,synchronized修饰静态方法获取的是类锁(类的字节码文件对象),synchronized修饰普通方法或代码块获取的是对象锁。
2、第二我们需要知道哪些情况锁是可以相互锁住,哪些相互锁不住?
类锁与类锁之间是相互能锁定的,对象锁与对象锁之间是相互能锁定的。但是对象锁与类锁是相互锁不住的。
代码解释:
public class DataTest {
//静态的属于类 , 非静态的属于对象
public synchronized void method1() {
System.out.println("俺是方法1--1");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("俺是方法1---2");
}
public synchronized