| public void inCreate() { |
| writeLock.lock(); |
| try { |
| i++; |
| Thread.sleep(500L); |
| j++; |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| }finally { |
| writeLock.unlock(); |
| } |
| } |
- 查看实现

| public void lock() { |
| sync.acquire(1); |
| } |
| public final void acquire(int arg) { |
| if (!tryAcquire(arg) && |
| acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) |
| selfInterrupt(); |
| } |
| protected boolean tryAcquire(int arg) { |
| throw new UnsupportedOperationException(); |
| } |
- 查看tryAcquire方法的实现

| @ReservedStackAccess |
| protected final boolean tryAcquire(int acquires) { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| Thread current = Thread.currentThread(); |
| int c = getState(); |
| int w = exclusiveCount(c); |
| if (c != 0) { |
| |
| if (w == 0 || current != getExclusiveOwnerThread()) |
| return false; |
| if (w + exclusiveCount(acquires) > MAX_COUNT) |
| throw new Error("Maximum lock count exceeded"); |
| |
| setState(c + acquires); |
| return true; |
| } |
| if (writerShouldBlock() || |
| !compareAndSetState(c, c + acquires)) |
| return false; |
| setExclusiveOwnerThread(current); |
| return true; |
| } |
| public void inCreate() { |
| writeLock.lock(); |
| try { |
| i++; |
| Thread.sleep(500L); |
| j++; |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| }finally { |
| writeLock.unlock(); |
| } |
| } |
- 查看实现

| 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 boolean tryRelease(int arg) { |
| throw new UnsupportedOperationException(); |
| } |
- 查看实现

| @ReservedStackAccess |
| protected final boolean tryRelease(int releases) { |
| if (!isHeldExclusively()) |
| throw new IllegalMonitorStateException(); |
| int nextc = getState() - releases; |
| boolean free = exclusiveCount(nextc) == 0; |
| if (free) |
| setExclusiveOwnerThread(null); |
| setState(nextc); |
| return free; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决