/*
    例子:创建三个窗口卖票,总共100张,使用实现Runnable接口的方式
    存在线程安全问题,待解决

    */

    1. package com.atguigu.java1;
    2. /**
    3. * 例子:创建三个窗口卖票,总共100张,使用实现Runnable接口的方式
    4. *存在线程安全问题,待解决
    5. *
    6. * @author Dxkstart
    7. * @create 2021-05-06 18:25
    8. */
    9. public class WindowTest2 {
    10. public static void main(String[] args) {
    11. //3.创建实现类的对象
    12. Window1 w1 = new Window1();
    13. //4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
    14. Thread t1 = new Thread(w1);
    15. Thread t2 = new Thread(w1);
    16. Thread t3 = new Thread(w1);
    17. //5.通过Thread类的对象调用start()
    18. t1.setName("窗口一:");
    19. t2.setName("窗口二:");
    20. t3.setName("窗口三:");
    21. t1.start();
    22. t2.start();
    23. t3.start();
    24. }
    25. }
    26. // 1.创建一个实现Runnable接口的类
    27. class Window1 implements Runnable {
    28. private int ticket = 100;
    29. //2.实现类去实现Runnable中的抽象方法:run()
    30. @Override
    31. public void run() {
    32. while (true) {
    33. if (ticket > 0) {
    34. System.out.println(Thread.currentThread().getName()+
    35. "卖票,票号为:" + ticket);
    36. ticket--;
    37. } else {
    38. break;
    39. }
    40. }
    41. }
    42. }