Java基础-Synchronized简析

  • 用在方法声明里,或者用在代码块上;
  • 用在静态方法上,对象锁是当前的字节码Class对象;
  • 用在普通方法上,对象锁是当前的实例对象;
  • 同步代码块,对象锁是synchronized(x)为括号里面的对象;
  • 一般和x.wait(), x.notify(),x.notifyAll()配合使用,进行线程间通讯的;
  • 该关键字禁止指令重排,保证了数据的可见性,和操作的原子性;
  • 在同步代码块上使用,在编译成字节码的时候,添加 monitorenter和monitorexit进行控制同步;
  • 在方法声明中添加Synchronized关键字生命同步方法,编译成字节码会在方法的flag中添加一个ACC_SYNCHRONIZED 的标识,代码该方法是一个同步方法。

(整理笔记待完善)

猜你喜欢

转载自www.cnblogs.com/qq-361807535/p/12598309.html