zoukankan      html  css  js  c++  java
  • Lock分析

     
      Lock接口是锁的实现,用来控制多个线程访问共享资源的方式,是在java 1.5的时候引入的,在此之前,只能通过synchronized的方式来取得对象的锁。
      synchronized中的锁是隐式获取释放的,而Lock中的锁需要显示的获取和释放,同时提供了可中断,超时获取等Synchronized不具备的特性。
      
      由于Synchronized中的是隐式的获取和释放锁,所以只能是先获取一个锁,然后释放该锁,但是在Lock的时候,却可以先获取一个锁,再获取另外一个锁,
      然后在释放掉前一个锁。
      
      同时,在Lock中还提供了一种条件锁的方式,通过newCondition()来获取一个条件锁。
     
      提供的主要方法:
      void lock():获取锁,调用该方法当前线程将会获取锁,当锁获得后,从该方法返回
     
      void lockInterruptibly() throws InterruptedException:可中断地获取锁,和lock()方法的不同之处在于该方法会响应中断,即在锁的获取中可以中断当前线程
     
      boolean tryLock() :尝试非阻塞的获取锁,调用该方法后立刻返回,如果能够获取则返回true,否则返回false
     
      boolean tryLock(Long time,TimeUnit unit) throws InterruptedException:超时的获取锁,只有在当前线程获得了锁、被中断、超时才会返回
     
      void unlock():释放锁。
     
      Condition newCondition():获取条件锁(等待通知组件),该组件和当前的锁绑定,当前线程只有获得了锁,才能调用该组件的wait()方法,而调用后,当前线程将释放锁。
     
     
      使用方式:
     Lock l = ...;
     l.lock();
     try {
       // access the resource protected by this lock
     } finally {
       l.unlock();
     }
     
     
     
     
     
     
     
  • 相关阅读:
    三种renderman规范引擎的dice对比
    球形环境映射之angular与latlong格式互换
    SharePoint中的ASHX
    如何查看SharePoint未知错误的详细信息
    在SQL Server 2008设置发送邮件步骤详解
    项目管理软件对比
    海外云服务器VPS
    国内和国外域名注册商介绍
    快速将一个表的数据生成SQL插入语句
    使用sql server 链接服务器
  • 原文地址:https://www.cnblogs.com/zerotomax/p/8966904.html
Copyright © 2011-2022 走看看