Java Lock锁

描述

运用 Java Lock 锁解决多线程卖票案例的数据污染问题。

题目

运用 Java Lock 锁解决多线程卖票案例的数据污染问题。

题目解决思路

  1. 创建两个线程,模拟两个窗口进行卖票。
  2. 使用 Lock 锁解决数据污染问题。

代码具体实现

Java Lock 锁代码:

public class MyRunnable implements Runnable { public static int count = 1; Lock l = new ReentrantLock(); @Override public void run() { while (true) { // 开锁 l.lock(); // 操作 if (count <= 5) { System.out.println(Thread.currentThread().getName() + " 卖出第" + count + "个口罩"); count++; }else{ System.out.println("卖光了"); System.exit(0); } // 解锁 l.unlock(); } } }

测试代码:

public class Test { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); MyRunnable r = new MyRunnable(); Thread t1 = new Thread(r,"窗口A"); Thread t2 = new Thread(r,"窗口B"); t1.start(); t2.start(); } }

运行结果如下图:

14 Java Lock锁.png

以上案例使用 Java Lock 锁解决多线程卖票产生的数据污染问题。