美文网首页纯文学程序员首页投稿(暂停使用,暂停投稿)
java 多线程,高并发变成之二 sychronized 和 l

java 多线程,高并发变成之二 sychronized 和 l

作者: 青城楼主 | 来源:发表于2017-10-17 16:27 被阅读29次

    sychronized  JVM内置同步方法,当代码块或加锁方法程序执行完会自动释放,不管是加载在代码块还是静态方法或者实例方法,其本质是加载在对象的锁!

    1加载代码块的锁范围较小,效率更高

    2静态方法相当于加锁在类对象,其他线程需要获得锁,必须等加在类对象的锁释放,只要该线程持续在当前方法内运行,其他线程依然无法获得方法的使用权

    3加在实例方法上,相当于加载在this上,即实例对象,仅对类的同一实例对象有互斥作用

    lock 是用程序实现的一同步接口,ReentrantLock是唯一实现该接口的,具有trylock 机制,即获取锁时候可以返回是否得到该锁的回调,返回false,即放弃,线程不会放入等待池中,synchronized的话线程会待在等待池中,lock 的话,在试图获得锁的线程有中断操作!lock 不能自动释放锁操作,必须在finally释放锁  unlock

    在并发量比较小的情况下,使用synchronized是个不错的选择,但是在并发量比较高的情况下,其性能下降很严重,此时ReentrantLock是个不错的方案。

    相关文章

      网友评论

        本文标题:java 多线程,高并发变成之二 sychronized 和 l

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