//测试lock锁 public class TestLock { public static void main(String[] args) { TestLock2 testLock2 = new TestLock2(); new Thread(testLock2,"a").start(); new Thread(testLock2,"b").start(); new Thread(testLock2,"c").start(); new Thread(testLock2,"d").start(); } } class TestLock2 implements Runnable{ int tickNums = 10; //定义Lock锁 private final ReentrantLock lock = new ReentrantLock(); @Override public void run() { while (true){ try { lock.lock(); //加锁 if (tickNums >0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+":::::"+tickNums--); }else { break; } } catch (Exception e) { e.printStackTrace(); }finally { lock.unlock(); //释放锁 } } } }
多线程,lock 可重入锁
最新推荐文章于 2024-10-06 20:16:20 发布
该代码示例展示了如何在Java中使用ReentrantLock进行线程同步。TestLock2类实现了Runnable接口,包含一个共享资源`tickNums`和一个ReentrantLock实例。在run方法中,线程获取锁后检查资源是否可用,然后进行操作并释放锁,确保了并发环境下的线程安全。
摘要由CSDN通过智能技术生成