2018-11-28  本文已影响0人  徐振杰

重入锁:ReentrantLock()

  1. tryLock(5, TimeUnit.SECONDS) :可以设置时长和时间单位
  2. tryLock():也可以不用设置参数,尝试获得锁,成功返回true,失败返回false
  3. ReentrantLock(true) :重入锁可以对公平性进行设置,而synchronized是非公平的,公平锁要维护一个有序队列,所以实现成本比较高。
  4. lockInterruptibly():获得锁但是优先响应终端
  5. Condition():通过lock接口Condition()方法可以生成一个Condition对象,他是重入锁的好帮手,里面有await()和signal()与synchronized中的wait()和notify()差不多
  6. Semaphore(5):同时允许多个线程访问一个资源
  7. ReentrantReadWriteLock():由于重入锁对所有的操作都是串行的,而读操作与读操作之间并不对数据的完整性造成破坏,因此有了读写分离锁。
  8. CountDownLatch(10):倒计时器,表示要10个线程完成任务
  9. CyclicBarrier(int parties,Runnable barrierAction):barrierAction:当计数器一次完成计数之后,系统会执行的动作。parties:表示计数的总数
  10. LockSupport : 里面有park()和unpark()可以替代suspend()和resume(),因为LockSupport 为每个线程都准备一个许可,如果许可可用park()会立刻消费这个许可,如果许可不可用,unpark()会放出这个许可。
上一篇下一篇

猜你喜欢

热点阅读