1 synchronized

1.1 一旦没有获取到就只能一直等待

A和B都获取同一个对象锁,如果A获取了,B没有获取到,那么在A释放该锁之前,B只能无穷等待下去。

1.2 synchronized是不公平锁

所谓的不公平就是后来的线程可能先获取大锁,从而会导致线程饥饿。

1.3 synchronized直接使用Object的wait/notify

2 Reentrantlock

2.1 多个conditionn来使用wait/notify

它可以让同步于同一个锁的线程等待不同的条件,这个是synchronized做不到的。参见ArrayBlockingQueue的实现。

或者说,它对同步于同一个锁的线程进行了子集划分。

2.2 获取锁超时

2.3 获取锁中断

2.4 如果不使用锁超时接口,没有获取到锁的话也要一直等待

2.5 ReentrantLock可以是公平的也可以是非公平的

公平的话,就是说,线程按照先来后到排队,fifo,先到的先获取锁。

3 共同点

当ReentrantLock不使用tryLock的时候,它们的是一样的,同一时间只能一个线程获取到锁,其它人只能等待。也就是说,总体上它们是一样的。

最新文章

  1. 数据结构作业——Sanji(优先队列)
  2. 创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL
  3. (转)Tomcat数据源连接池加密
  4. SQL select 语法(转)
  5. Hadoop 之MongoDB
  6. android 入门-关键词介绍
  7. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
  8. php wampserver 80 端口无法开启的解决方法
  9. Navi.Soft30.产品.格式化.操作手册
  10. 关于字符串计算size的方法比较
  11. union关键字 与大小端模式
  12. property、synthesize、id
  13. POJ 2516 Minimum Cost
  14. gops - Go语言程序查看和诊断工具
  15. 【VBA】セールの値は配列に変換方法
  16. 5. SprigBoot自动配置原理
  17. phalcon7开发环境搭建
  18. 006.MySQL双主-Master02可用配置
  19. Minimalist GNU for Windows
  20. sql 之优化小技巧

热门文章

  1. css3 手机端翻屏切换效果
  2. 45深入理解C指针之---指针释放
  3. 23深入理解C指针之---数组的基础
  4. iOS8下定位问题解决
  5. php 生成二维码图片
  6. Arduino可穿戴教程ArduinoIDE新建编辑源文件
  7. awk在企业中最常用的语句
  8. CodeForces - 600F Edge coloring of bipartite graph
  9. RabbitMQ 消费端限流、TTL、死信队列
  10. javascript --- 原型初探七日谈(二)