1. package com.pln.thread;
    2. //多个线程操作一个对象;
    3. //买火车票的例子
    4. //问题:多个线程操作同一个资源会出现重复,线程不安全,数据出现紊乱
    5. public class TestThread4 implements Runnable{
    6. private int ticket = 10;
    7. @Override
    8. public void run() {
    9. while (true){
    10. if(ticket<=0){
    11. break;
    12. }
    13. // 模拟延时
    14. try {
    15. Thread.sleep(200);
    16. } catch (InterruptedException e) {
    17. e.printStackTrace();
    18. }
    19. System.out.println(Thread.currentThread().getName()+"---->拿了第"+ticket--+"张票");
    20. }
    21. }
    22. public static void main(String[] args) {
    23. TestThread4 tickets = new TestThread4();
    24. new Thread(tickets,"小明").start();
    25. new Thread(tickets,"老师").start();
    26. new Thread(tickets,"黄牛").start();
    27. }
    28. }

    //执行结果如下(出现相同数据)
    image.png