public class Sell{
//多线程实现四个窗口共售100张票
public static void main(String[] args){
//创建了四个线程(窗口)
TicketSell t1=new TicketSell();
TicketSell t2 = new TicketSell();
TicketSell t3 = new TicketSell();
TicketSell t4 = new TicketSell();
t1.setName("一号窗口");
t2.setName("二号窗口");
t3.setName("三号窗口");
t4.setName("四号窗口");
//启动线程
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class TicketSell extends Thread {
private static int ticket = 100;//定义总票数为100张
private int now = ticket + 1;//定义编号
public void run() {
while (ticket > 0) {
/* 加同步锁,在循环开始外围进行同步代码块,当第一个线程进入的时候,因为一直在循环所以代码没有执行完,
其他的线程不能执行该同步代码块的代码,保证线程安全。*/
synchronized (TicketSell.class) {
//当前票数大于0才可以售票
if (ticket > 0) {
假设有四个售票窗口,共同享有100张票的资源,编程实现售票窗口的售票业务,要求用到线程同步的知识实现。
于 2022-04-01 19:48:52 首次发布