Lock的tryLock方法
最编程
2024-07-28 18:56:28
...
概述
tryLock 是防止自锁的一个重要方式。
tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。
package test; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; //学习 tryLock //tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。 public class tryLock { public static void main(String[] args) { System.out.println("开始"); final Lock lock = new ReentrantLock(); new Thread() { @Override public void run() { String tName = Thread.currentThread().getName(); if (lock.tryLock()) { System.out.println(tName + "获取到锁!"); } else { System.out.println(tName + "获取不到锁!"); return; } try { for (int i = 0; i < 5; i++) { System.out.println(tName + ":" + i); } Thread.sleep(5000); } catch (Exception e) { System.out.println(tName + "出错了!!!"); } finally { System.out.println(tName + "释放锁!!"); lock.unlock(); } } }.start(); new Thread() { @Override public void run() { String tName = Thread.currentThread().getName(); if (lock.tryLock()) { System.out.println(tName + "获取到锁!"); } else { System.out.println(tName + "获取不到锁!"); return; } try { for (int i = 0; i < 5; i++) { System.out.println(tName + ":" + i); } } catch (Exception e) { System.out.println(tName + "出错了!!!"); } finally { System.out.println(tName + "释放锁!!"); lock.unlock(); } } }.start(); System.out.println("结束"); } }
推荐阅读
-
C++ 中的抽象类和抽象方法
-
VideoCLIP-XL:推进对视频 CLIP 长篇描述模型-3 方法的理解
-
C# II 中的多态性应用说明示例(使用隐藏方法)
-
opencv c++ 获取掩码的最大连接域方法
-
无人机的测距方法
-
从远程 Windows 共享目录读取文件 + 解析后缀为 .mdb 的文件 - 两种下载文件的方法:jcifs、smbj
-
在 ts 中实现类 java hashmap 的简单方法
-
[论文阅读] 基于一致性的物体检测主动学习方法:基于一致性的物体检测主动学习方法-5.实验
-
[阅读笔记 - 解密超大规模集成电路设计方法] 问题 6:实现超大规模集成电路(VLSI)设计的主要方法是什么?
-
SpringCloud--持久层框架MyBatis Plus的使用方法和原理详解--V.MyBatis Plus 使用总结