• 系统响应慢什么原因?


    concurrent.locks包下常用类

     
    1. Lock
     
    首先要说明的是Lock,它是一个接口:
    [java] view plain copy
     
    1. public interface Lock {  
    2.     void lock();  
    3.     void lockInterruptibly() throws InterruptedException;  
    4.     boolean tryLock();  
    5.     boolean tryLock(long time, TimeUnit unit) throws InterruptedException;  
    6.     void unlock();  
    7.     Condition newCondition();  
    8. }  
    • lock()方法用来获取锁。
    • tryLock()尝试获取锁,如果成功则返回true,失败返回false(其他线程已占有锁)。这个方法会立即返回,在拿不到锁时也不会等待。
    • tryLock(long time, TimeUnit unit)方法和tryLock()方法类似,只不过在拿不到锁时等待一定的时间,如果超过等待时间还拿不到锁就返回false。
    • lockInterruptibly()方法比较特殊,当通过这个方法获取锁时,如果该线程正在等待获取锁,则它能够响应中断。也就是说,当两个线程同时通过lockInterruptibly()获取某个锁时,假如线程A获得了锁,而线程B仍在等待获取锁,那么对线程B调用interrupt()方法可以中断B的等待过程。
    [java] view plain copy
     
    1. // lock()的使用  
    2. Lock lock = ...;  
    3. lock.lock();  
    4. try{  
    5.     //处理任务  
    6. }catch(Exception ex){  
    7.        
    8. }finally{  
    9.     lock.unlock();   //释放锁  
    10. }  
    [java] view plain copy
     
    1. // tryLock()的使用  
    2. Lock lock = ...;  
    3. if(lock.tryLock()) {  
    4.      try{  
    5.          //处理任务  
    6.      }catch(Exception ex){  
    7.            
    8.      }finally{  
    9.          lock.unlock();   //释放锁  
    10.      }   
    11. }else {  
    12.     //如果不能获取锁,则直接做其他事情  
    13. }  
    [java] view plain copy
     
    1. // lockInterruptibly()的使用  
    2. public void method() throws InterruptedException {  
    3.     lock.lockInterruptibly();  
    4.     try {    
    5.      //.....  
    6.     }  
    7.     finally {  
    8.         lock.unlock();  
    9.     }    
    10. }  
    使用synchronized关键字,当线程处于等待锁的状态时,是无法被中断的,只能一直等待。
  • 相关阅读:
    深入理解jsonp跨域请求原理
    vue项目性能优化总结
    脱离Office约束,C#结合Mpxj组件完美解析MSProject(.mpp)文件
    将list转换成DataTable
    json时间格式化
    C# DES加密解密
    asp.net mvc ViewBag常用操作
    Jquery ajax与asp.net MVC前后端各种交互
    存储过程实现树形目录外联其他表实现每个节点的统计
    CSS自定义右键菜单
  • 原文地址:https://www.cnblogs.com/panxuejun/p/8622651.html
Copyright © 2020-2023  润新知