使用java lock锁继承Thread 实现三个窗口卖500张票
可以使用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张票了
原文地址: https://www.cveoy.top/t/topic/ig3V 著作权归作者所有。请勿转载和采集!