美文网首页
synchronized lock 解读

synchronized lock 解读

作者: sunshaohua520 | 来源:发表于2017-08-02 21:22 被阅读0次

    synchronized lock是java 解决并发问题常用的两种方式,都能保证同一时间只能有一个线程执行。他们的区别?

    1.synchronized 可以修饰普通方法,代码块,静态类。lock 只能放在代码中。

    2.synchronized 修饰,线程A在执行,则线程B一直等待,直到A释放锁,而ReentrantLock 则是在等待指定时间后中断。

    3.synchronized 在jvm 层实现,只有代码执行完毕或出现异常才可退出,而ReentrantLock 是由代码实现,退出只能执行finanlly{} 里的unlock()。

    4.竞争不是很激烈的情况下,synchronized效率高于ReentrantLock,反之成立。

    5.lock 有读写锁和可重入锁(可重入读锁、可重入写锁、读锁升级写锁、写锁降级读锁),而synchronized没有

    原理:

    每个对象都有一个监视器(monitor),在线程进入monitor 时,会尝试获取monitor 的所有权,如果进入数为0,则获取锁,将进入数修改为1,即拥有该monitor 的所有权,如果进入数为1,则进入阻塞直到monitor 进入数为0.

    相关文章

      网友评论

          本文标题:synchronized lock 解读

          本文链接:https://www.haomeiwen.com/subject/truukxtx.html