- 浏览: 63729 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
读ReentrantLock的unlock()源码: //这个方法:委托到sync的release实现。 public void unlock() { sync.release(1); } public final boolean release(int arg) { //释放锁成功 if (tryRelease(arg)) { Node h = head; if (h != null && h.waitStatus != 0) unparkSuccessor(h); return true; } return false; } protected final boolean tryRelease(int releases) { int c = getState() - releases; if (Thread.currentThread() != getExclusiveOwnerThread()) throw new IllegalMonitorStateException(); boolean free = false; //如果c==0,即getState为1,如果c!=0,说明锁有重入。 if (c == 0) { free = true; setExclusiveOwnerThread(null); } setState(c); return free; } //唤醒第二个node private void unparkSuccessor(Node node) { int ws = node.waitStatus; if (ws < 0) //设置第一个节点状态为0 compareAndSetWaitStatus(node, ws, 0); //获取第二个节点 Node s = node.next; if (s == null || s.waitStatus > 0) { s = null; //从队尾开始循环直到拿到离note最近的状态<0的节点 for (Node t = tail; t != null && t != node; t = t.prev) if (t.waitStatus <= 0) s = t; } //解锁唤醒一个等待的线程 if (s != null) LockSupport.unpark(s.thread); }
发表评论
-
读ThreadLocal源代码
2017-10-12 15:00 241//可以存取线程局部变量 //先看构造函数 pub ... -
读Exchanger源码
2017-10-10 11:38 338//用于线程间交换数据 public V exchang ... -
读Executors源码
2017-09-29 15:23 264//一个管理线程创建的类里面都是静态方法 //创建一 ... -
读ScheduledThreadPoolExecutor源码
2017-09-25 17:33 427//一个可以延迟执行的定时任务 //先看构造函数 构造函 ... -
读部分ThreadPoolExecutor源码
2017-09-25 15:27 308//线程池 //先看构造方法 public Threa ... -
读AbstractExecutorService
2017-09-23 16:34 332//他是ExecutorService的部分实现 pub ... -
读ExecutorCompletionService源码
2017-09-23 11:22 490//一个用来管理已完成任务的service,内部封装了一个 ... -
读FutureTask源码
2017-09-22 16:45 274//一个可以异步返回计算的结果 //它同时实现了Futu ... -
读ConcurrentSkipListMap源码
2017-09-21 15:11 298//数据结构是跳表 关于数据结构http://blog.c ... -
读Semaphore源码
2017-09-09 14:58 297//一个信号量,只有在池中还拥有许可时才允许线程继续执行。 ... -
读CyclicBarrier源码
2017-09-01 17:59 353//一个循环的屏障。所有的线程在屏障处等待其他线程执行完毕 ... -
读CountDownLatch源码
2017-09-01 14:01 325//在完成一组操作之前允许一个或多个线程等待内部用的AQS ... -
读ConcurrentLinkedQueue
2017-09-01 11:40 292//这是一个无阻塞的队列没有加任何锁全部利用CAS机制实现 ... -
读ConcurrentHashMap源码
2017-08-31 11:21 279//先看构造函数 public ConcurrentHa ... -
读CopyOnWriteArrayList源码
2017-08-22 12:59 413//在该集合上的写操作都是在原有的副本上进行的操作。这样可 ... -
读LinkedBlockingDeque源码
2017-08-21 14:26 565//这是一个支持双端操作的可阻塞队列 //先看构造函数 ... -
读SynchronousQueue源码
2017-08-10 10:51 376//先看构造方法 public SynchronousQ ... -
读PriorityBlocking源码
2017-08-09 13:47 356//一个基于而为堆的优先级队列,它是无界的。 //先看构 ... -
读DelayQueen源码
2017-08-07 15:16 279//一个基于二叉堆优先 ... -
LinkedblockingQueue源码解读
2017-08-04 13:03 350//LinkedBlockQueue //先看构造函数 ...
相关推荐
ReentrantLock源码解析之释放锁unlock() ReentrantLock是一个可重入锁,它提供了一个unlock()方法来释放锁。在本章中,我们将深入探讨unlock()方法的源码,了解其释放锁的步骤和机制。 unlock()方法的主要作用是...
Java并发之ReentrantLock类源码解析 ReentrantLock是Java并发包中的一种同步工具,它可以实现可重入锁的功能。ReentrantLock类的源码分析对理解Java并发机制非常重要。本文将对ReentrantLock类的源码进行详细分析,...
标题中的“Unlock PLC Delta_plcDelta_PLC_UNLOCKDELTA_unlock_deltaplc_源码.zip”暗示了这个压缩包可能包含的是与Delta PLC(Delta Electronics的可编程逻辑控制器)相关的解锁或破解源代码。在工业自动化领域,...
本文将深入解析ArrayBlockingQueue的内部实现机制和关键特性。 **1. ArrayBlockingQueue的构造** ArrayBlockingQueue在初始化时需要指定其容量大小,这个容量一旦设定就无法改变。构造函数通常需要传入两个参数:...
Java源码解析之可重入锁ReentrantLock ReentrantLock是一个可重入锁,在ConcurrentHashMap中使用了ReentrantLock。它是一个可重入的排他锁,它和synchronized的方法和代码有着相同的行为和语义,但有更多的功能。 ...
然后,通过特征提取,比如关键点检测或基于模板匹配的方法,识别出具有代表性的面部特征。最后,这些特征会被转化为数字模型,存储在设备的安全区域,用于后续的解锁验证。 在实际应用中,用户需要先设置一个“面部...
在压缩包中的文件`unlock.js演示四种不同的滑动解锁`,很可能是包含这四种方法的具体实现,通过查看和分析源码,开发者可以更深入地理解每种解锁方式的工作原理,并在自己的项目中进行复用或定制。 总的来说,`...
在这种情况下,"unlock-all-v120"插件就扮演了关键角色。 "unlock-all-v120"是一个专为VMware设计的第三方工具,主要用于解除VMware对特定操作系统的支持限制,特别是对苹果Mac系统的支持。在没有这个插件的情况下...
尽管Unlock6提供了一种自我解决BIOS密码问题的方法,但这种方法仍然存在一定的风险。因此,在尝试任何密码清除之前,用户应该充分了解自己的电脑和这个工具,遵循所有指示,并做好数据备份。如果不确定或担心可能的...
在合法且合理的范围内,这可能通过特定的工具或技术手段实现,例如使用第三方软件,如描述中提到的"S7+Blocks+Unlock.exe"。这种工具可能能够解析和显示加密块的STL(Structured Text Language)代码,因为STL是一种...
标题“HDD Unlock”指的是一个专门用于解锁硬盘的工具或技术。这主要涉及到计算机硬件,尤其是硬盘驱动器的安全和管理方面。在IT领域,硬盘解锁可能涉及到几种不同的情况,包括解除硬盘的物理锁定、逻辑锁定或者是...
2. **libcef.dll**:Chromium Embedded Framework(CEF)的核心库文件,它是Google Chrome浏览器的基础部分,用于实现miflash_unlock的图形用户界面,提供友好的交互体验。 3. **pdf.dll**:可能用于显示PDF文档,...
标题中的“miflash_unlock-en-4.5.813.51_miflash_unlock.exe_miflashunlocken_”表明这是一个针对小米(Mi)设备的解锁工具,具体为Mi Flash Unlocker的英文版本,版本号为4.5.813.51。这个工具主要用于帮助用户...
本文将详细介绍这款工具的功能、使用方法以及它如何帮助用户解决苹果设备的解锁问题。 1. **AnyUnlock是什么?** AnyUnlock是专为iOS设备设计的一款密码解锁工具,旨在帮助用户在忘记密码或遇到ID锁问题时,安全、...
Unlock All 是 VMware虚拟机安装MAC OS X系统时所需要安装的补丁,需要运行这个补丁之后,才能看到Apple Mac OS X 的安装选项。否则无法加载ISO(DMG)镜像进行安装。所以,如果各位要安装黑苹果的话这个补丁是必须...
在这个过程中,我们主要会使用到两个专业工具,即PC3000和HDD Unlock。下面将详细解释这两个工具及其在解除硬盘密码中的应用。 首先,PC3000是一款由俄罗斯Acronis公司开发的专业硬盘数据恢复和维修工具。它广泛...
miflash_unlock 2.2,2.3,3.3,3.5,4.5,5.5
《文件解锁小工具Unlock的深度解析与应用》 在日常的计算机使用中,我们经常会遇到无法删除或移动的文件,这种情况通常是因为文件被其他进程占用,导致系统无法正常执行删除操作。为了解决这一问题,一种名为...
Redisson分布式锁源码解析 Redisson分布式锁是一种基于Redis的分布式锁实现,继承了Reentrant Lock的特性,具有超时、重试、中断等功能,并且由于Redis的分布式特性,非常适合用来做Java中的分布式锁。本文将对...
《VMware Mac最新补丁unlock-all-v120:解锁VMware 10 Mac虚拟机功能详解》 在虚拟化技术领域,VMware是众多用户首选的虚拟机软件之一,尤其对于Mac用户而言,它提供了在苹果操作系统上运行Windows和其他操作系统的...