验证lock锁是否时可重入锁
package com.yang.lock;
import java.util.concurrent.locks.ReentrantLock;
//验证Lock可重入锁
public class Demo06 {
public static void main(String[] args) {
ReentrantLock y = new ReentrantLock();//遥控器锁
ReentrantLock d = new ReentrantLock();//电池锁
Thread th = new Thread(new XiaoMing1(y,d));
Thread th1 = new Thread(new XiaoHong2(y,d));
th.start();
th1.start();
}
}
class XiaoMing1 implements Runnable{
private ReentrantLock ykq;
private ReentrantLock dc;
public XiaoMing1(ReentrantLock y, ReentrantLock d) {
this.ykq = y;
this.dc = d;
}
Lock锁
package com.yang.lock;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*
Lock锁:
1] 多个线程使用时一定要保证同一个锁对象
2]lock.lock()加锁。lock.unlock()解锁。
3]如果代码出现了异常,程序不会自动解锁,所以使用Lock的时候 最好写到try catch finally代码中
*/
public class Demo05 {
public static void main(String[] args) {
//两个对象
Thread th = new Thread(new TicketTwo(),"窗口A");
Thread th1 = new Thread(new TicketTwo(),"窗口B");
th.start();
th1.start();
}
}
class TicketTwo implements Runnable {
static int num = 1;
static Lock lock = new ReentrantLock();//创建Lock锁 两个对象加一个static
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通