可以使用Java的Lock锁和Thread类来实现三个窗口同时卖500张票的功能。

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class TicketSale extends Thread {
    private static int tickets = 500;  // 初始票数
    private static Lock lock = new ReentrantLock();  // 创建锁对象

    public TicketSale(String name) {
        super(name);
    }

    @Override
    public void run() {
        while (tickets > 0) {
            try {
                lock.lock();  // 获取锁
                if (tickets > 0) {
                    System.out.println(Thread.currentThread().getName() + "卖出第" + tickets + "张票");
                    tickets--;
                }
            } finally {
                lock.unlock();  // 释放锁
            }
        }
    }

    public static void main(String[] args) {
        Thread t1 = new TicketSale("窗口1");
        Thread t2 = new TicketSale("窗口2");
        Thread t3 = new TicketSale("窗口3");

        t1.start();
        t2.start();
        t3.start();
    }
}

在上面的代码中,我们创建了一个名为TicketSale的类,继承自Thread类。在run方法中,使用lock.lock()来获取锁,然后判断票数是否大于0,如果大于0,则卖出一张票并将票数减1。最后使用lock.unlock()释放锁。

在main方法中,创建了三个窗口线程对象t1、t2、t3,并分别启动这三个线程。每个线程在运行时会执行run方法,通过锁的机制来保证同时只有一个线程卖票,并且保证了线程安全。

这样,三个窗口就可以同时卖出500张票了

使用java lock锁继承Thread 实现三个窗口卖500张票

原文地址: https://www.cveoy.top/t/topic/ig3V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录