| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | package J20250730.demo10_lock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author WanJl * @version 1.0 * @title SellTicket * @description 同步方法 * @create 2025/7/30 */public class SellTicket implements Runnable {    //总共100张票    private int tickets = 100;    //创建可重入锁对象    private Lock lock = new ReentrantLock();    @Override    public void run() {        String name = Thread.currentThread().getName();        while (true) {            try {                //加锁                lock.lock();                if (tickets > 0) {                    try {                        Thread.sleep(10);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    //显示XX窗口成功售票                    System.out.println(name + "售票1张,还剩" + --tickets + "张票");                }            } catch (Exception e) {                e.printStackTrace();            } finally {                //锁必须要释放                lock.unlock();            }        }    }}
 |