Lock锁
Java5开始,可以使用Java.util.concurrent.locks.Lock 接口
显示定义同步锁对象,实现同步机制,主要实现类是ReentrantLock类。
可使用ReentrantLock类显示加锁和释放锁。达到synchronized的效果。
Lock实现提供比使用synchronized方法和语句可以获得更广泛,更灵活的锁定操作。
如:lock.lock(); lock.unlock();
import java.util.concurrent.locks.ReentrantLock;
public class SellTicket implements Runnable {
int ticket=100;
//创建锁对象(使用Lock对象)
ReentrantLock lock=new ReentrantLock();
@Override
public void run() {
while (true){
lock.lock(); //获取资源并且加锁
if (ticket>0){
System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket+"张票");
ticket--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
//不管怎样,都会执行
lock.unlock();
}
}else {
//如果是最后一张票,那么让该线程释放锁
lock.unlock();
break;
}
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库