Day64.练习三个窗口卖票(Runnable和Thread两种方法实现) -Java多线程

    科技2024-04-18  12

    练习:三个窗口卖票(Runnable和Thread两种方法实现)

    使用继承Thread类的方式实现 /**例子: * 创建三个窗口,总票数为100张,使用继承Thread类的方式实现 * * 存在线程安全问题,待解决。 * * @author 阿昌 * @create 2020-10-07 10:09 */ class Window extends Thread{ private static int ticket = 100; @Override public void run() { while (true){ if (ticket> 0){ System.out.println(getName() + ": 买票,票号为: "+ ticket); ticket--; }else{ System.out.println(getName() + "票已售空"); break; } } } } public class WindowTest { public static void main(String[] args) { Window w1 = new Window(); Window w2 = new Window(); Window w3 = new Window(); w1.setName("窗口1"); w2.setName("窗口2"); w3.setName("窗口3"); w1.start(); w2.start(); w3.start(); } } 使用实现Runnable接口的方式 /** * 创建三个窗口,总票数为100张,使用实现Runnable接口的方式 * 存在线程安全问题,待解决。 * * * @author 阿昌 * @create 2020-10-07 11:27 */ class WThread implements Runnable{ private int ticket = 100; @Override public void run() { while (true){ if (ticket > 0){ System.out.println(Thread.currentThread().getName()+ " 卖票,票号为: "+ ticket); ticket--; }else{ break; } } } } public class WindowTest1 { public static void main(String[] args) { WThread wThread = new WThread(); Thread t1 = new Thread(wThread); Thread t2 = new Thread(wThread); Thread t3 = new Thread(wThread); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t1.start(); t2.start(); t3.start(); } }
    Processed: 0.010, SQL: 8