sychronized是在jvm层面上实现的,可以通过一些监控工具监控sychronized的锁定,而且在代码执行出现异常时,jvm会自动释放锁,但是使用Lock就不行,lock是通过代码实现的,最终需要在finally中释放。

ReentranLock同样拥有synchronized相同的并发性和内存语义,不过它还多了锁投票、定时锁和中断锁,比如说对于中断锁,当一个线程等待了足够长的时间还没有等待到资源的话,就中断等待,去干别的事情;ReentranLock还可以使锁更加公平。

在资源竞争不是很激烈的情况下,synchronized的性能要优于ReentranLock,但是在资源竞争很激烈的情况下,sychronized的性能会下降严重,而ReentranLock的性能则可以维持.

同样在资源竞争激烈的情况下,Atomic会比ReentranLock的性能更优,不过Atomic有一个确定就是只能同步一个值,一段代码中只能出现一个Atomic的变量,多了就无法同步。

而对于ReentranLock来说,则可以结合Condition实现多个谓词的并发对象,通过调用await()和signal()方法进行等待锁和释放锁。而在synchronized中是调用wait()、notify()、notifyAll()来进行线程间的通信。

sychronized 和 Lock的比较的更多相关文章

  1. sychronized和lock和区别

    syschronized和lock的区别 synchronized的锁可重入.不可中断.非公平,而Lock锁可重入.可中断.可公平.绑定多个Condition.(两者皆可重入)synchronized ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. BAT的面试经验_摘抄

    一.心态 心态很重要! 心态很重要! 心态很重要! 重要的事情说三遍,这一点我觉得是必须放到前面来讲. 找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你很牛逼,你就一定能进你想进的公 ...

  4. Android复习指南

    基础无外乎几部分:语言(C/C++或java),操作系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域.这里面其实有很多东西,各大面试宝典都有列举. 在这只列举了Android客户端所需要的和我 ...

  5. 基础1 JavaSe基础

    JavaSe基础 1. 九种基本数据类型的大小,以及他们的封装类 boolean 无明确指定 Boolean char 16bits Character byte 8bits Byte short 1 ...

  6. j2SE基回顾(一)

    1. 九种基本数据类型的大小,以及他们的封装类. 2. Switch能否用string做参数? 3. equals与==的区别. 4. Object有哪些公用方法? Object是所有类的父类,任何类 ...

  7. java总结

    JUC概况 以下是Java JUC包的主体结构: ? Atomic : AtomicInteger ? Locks : Lock, Condition, ReadWriteLock ? Collect ...

  8. 关于一些基础的Java问题的解答(五)

    21. 实现多线程的两种方法:Thread与Runable 在Java中实现多线程编程有以下几个方法: 1.继承Thread类,重写run方法 public class Test { public s ...

  9. Java面经

    转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)   原文:http://www.cnblogs.com/wang-meng/p/5 ...

随机推荐

  1. package.json 字段全解析

    Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...

  2. 网站开发常用cmd命令

    一.Windows服务安装: framework 4.0 : cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 framework 2.0 :  cd ...

  3. Hadoop_UDF示例

    UDF:  一进一出 Eclipse端 1. 继承UDF 2. 实现evaluate方法(可重裁实现多个evaluate方法,以实现不同需求) 3. 导出类jar包,注意指定main方法 Hive端 ...

  4. HDU3371 最小生成树

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. 2016huasacm暑假集训训练三 F - Jungle Roads

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使 ...

  6. IE8浏览器不能识别CSS伪类的解决办法。

    1. 方法一:开头加上这两句 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  7. asp.net mvc 表单相关

    1. <form action="/controller/action" method="post"> ... </form> *act ...

  8. tp文件上传;org/RBAC.class.php 权限类;think/page,class,php分页类;

    一.上传表单: 注意,要使用上传功能 你的表单需要设置 enctype="multipart/form-data" <form action="__URL__/up ...

  9. 单例模式-C++

    单例模式(Singleton) --本文内容部分引自<大话设计模式 Chapter21> 一.概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使一个 ...

  10. Swift 必备开发库10个

    1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...