案例:四个窗口共卖100张票(同步代码块方式)

案例:四个窗口共卖100张票(同步代码块方式)

代码实现

package com.sun.base.XianCheng;
/**
 * 用同步代码块synchronized
 * 实现四个窗口共卖100张票
 * @author SFF
 */
public class TextTicket {
    public static void main(String[] args) {
        //创建Ticket
        Ticket ticket = new Ticket();
        //创建线程对象
        Thread w1=new Thread(ticket,"窗口1");
        Thread w2=new Thread(ticket,"窗口2");
        Thread w3=new Thread(ticket,"窗口3");
        Thread w4=new Thread(ticket,"窗口4");
        //启动线程
        w1.start();
        w2.start();
        w3.start();
        w4.start();
    }
}

/**
 * 票类
 */
class Ticket implements Runnable{
    private int ticket=100;
    private Object obj =new Object();
    @Override
    public void run() {
        while (true) {
            synchronized (obj) {
                if (ticket < 0) {
                    break;
                }
                System.out.println(Thread.currentThread().getName() + "卖了第" + (100 - ticket) + "张票");
                ticket--;
            }
        }
    }
}
posted @ 2020-12-09 21:29  某人很酷  阅读(324)  评论(0)    收藏  举报