synchronized 之 对象锁 和 类锁
一、synchronized(object) 如果object没有被加锁,则获取object的锁;如果object已经被加锁则等待object的锁被释放。 二、需要加锁的情景 多线程共享同一资源会引起线程安全的情况下,才需要加同步锁。不同的对象在不同的线程中时(如:A类的A1对象,和A类的A2对象,分别在线程a1和a2中),是不存在线程安全问题的。 三、synchronized的几种用法或者是形式 大致可以分为两种情况 synchronized修饰非静态方法、同步代码块的synchronized (this)用法和synchronized (非this对象) synchronized修饰静态方法以及同步代码块的synchronized (类.class) 四、理解 synchronized修饰非静态方法 和 synchronized(this) 用synchronized修饰方法和用synchronized(this)获取的是该对象的锁 synchronized同步方法 对其它的synchronized同步方法或synchronized(this)同步代码块调用是堵塞状态; 同一时间只有一个线程执行synchronized同步方法中的代码。 synchronized(this)同步代码块 对其它的synchronized同步方法或synchronized(this