Java synchronized

Posted 码农也疯狂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java synchronized 相关的知识,希望对你有一定的参考价值。

  1. 解决问题

    多线程并发问题。

  2. 原理

     

  3. 注意点

     a.  synchronized(class、this、object)区别?

        synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待。class和this可以同时使用

       1. 对于实例同步方法,锁定当前实例对象;

       2. 对于静态同步方法,锁定当前对象的class对象;

       3. 对于方法同步块,synchronized锁定括号内配置的对象。

       class与this的几种情况:

          synchronized(class)

          synchronized(this)

          线程各自获取monitor,不会等待;

          synchronized(this)

          synchronized(this)

          如果不同线程监视同一个实例对象,就会等待;如果不同的实例,就不会等待;

          synchronized(class)

          synchronized(class)

          如果不同线程监听同一个实例或不同的实例对象,都会等待。

 

   

 

以上是关于Java synchronized 的主要内容,如果未能解决你的问题,请参考以下文章

多线程同步实现

synchronized的四种用法

synchronized关键字

Synchronized和锁升级

Java Thread系列线程安全

总结:一文死磕 synchronized 和 AQS 系