Lock锁
- 从JDK5.0开始,java提供了更加强大的线程同步机制-通过显示定义同步锁对象,来实现同步。同步锁使用lock对象充当
- java.util.concurrent.locks.Lock接口是控制多个线程对共享资源经行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对lock对象加锁,线程开始访问共享资源之前应获得Lock对象
- 在现实线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁,释放锁。
| package com.Luoking.Thread; |
| |
| import java.util.concurrent.locks.ReentrantLock; |
| |
| public class ThreadLock { |
| public static void main(String[] args) { |
| buyTickt buyTickt = new buyTickt(); |
| new Thread(buyTickt).start(); |
| new Thread(buyTickt).start(); |
| new Thread(buyTickt).start(); |
| |
| } |
| |
| |
| |
| |
| } |
| |
| class buyTickt implements Runnable{ |
| private int num = 10; |
| private final ReentrantLock lock = new ReentrantLock(); |
| |
| @Override |
| public void run() { |
| try{ |
| lock.lock(); |
| while(true){ |
| if(num<=0){ |
| break; |
| } |
| { |
| try { |
| Thread.sleep(1000); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| System.out.println(num--); |
| } |
| } |
| |
| }finally { |
| lock.unlock(); |
| } |
| |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY