zoukankan      html  css  js  c++  java
  • zbb20180913 java thread JDK-Lock锁

    JDK1.5-Lock

    jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 synchronized 关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。

    Lock写法

    Lock lock  = new ReentrantLock();

    lock.lock();

    try{

    //可能会出现线程安全的操作

    }finally{

    //一定在finally中释放锁

    //也不能把获取锁在try中进行,因为有可能在获取锁的时候抛出异常

      lock.ublock();

    }

    Lock 接口与 synchronized 关键字的区别

    Lock 接口可以尝试非阻塞地获取锁 当前线程尝试获取锁。如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁。
    Lock 接口能被中断地获取锁 与 synchronized 不同,获取到锁的线程能够响应中断,当获取到的锁的线程被中断时,中断异常将会被抛出,同时锁会被释放。

    Lock 接口在指定的截止时间之前获取锁,如果截止时间到了依旧无法获取锁,则返回。

    Condition用法

     Condition的功能类似于在传统的线程技术中的,Object.wait()和Object.notify()的功能。

    代码

    Condition condition = lock.newCondition();

    res. condition.await();  类似wait

    res. Condition. Signal() 类似notify

  • 相关阅读:
    IDEA开发 Scala 项目
    mvn编译时绕过本地jar去maven仓库下载问题
    三角化(转载)
    分布式文件服务器介绍(转载)
    VSCode 设置侧边栏字体大小
    libLas编译
    OSG编译
    vcpkg.exe安装与应用
    OpenCASCADE编译
    gl2ps编译
  • 原文地址:https://www.cnblogs.com/super-admin/p/9646405.html
Copyright © 2011-2022 走看看