Java基础学习:多线程06

Java基础学习:多线程06

  • 初始并发问题:

    • 多个线程操作同一个资源的情况下,线程不安全了,数据紊乱;

  • 代码案例:抢火车票


    /**
    * 多个线程同时操作同一个对象:
    *
    * 买火车票:出现了并发
    *
    * 发现问题:多个线程操作同一个资源的情况下,线程不安全了,数据紊乱;
    */
    public class TestThread05 implements Runnable {

       //票数
       private int ticketNums=10;

       //重写run()方法:
       @Override
       public void run() {
           //线程体:取票
           while(true){
               if(ticketNums<=0){
                   break;//退出循环
              }
               try {
                   Thread.sleep(500);//模拟延时
              } catch (InterruptedException e) {
                   e.printStackTrace();
              }
               System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"票");
          }

      }

       //主线程
       public static void main(String[] args) {

           TestThread05 t1=new TestThread05();

           new Thread(t1,"小明").start();
           new Thread(t1,"老师").start();
           new Thread(t1,"黄牛党").start();


      }
    }

    /*
    老师-->拿到了第10票
    黄牛党-->拿到了第10票
    小明-->拿到了第10票
    黄牛党-->拿到了第9票
    小明-->拿到了第9票
    老师-->拿到了第8票
    黄牛党-->拿到了第7票
    小明-->拿到了第6票
    老师-->拿到了第5票
    老师-->拿到了第4票
    黄牛党-->拿到了第3票
    小明-->拿到了第2票
    老师-->拿到了第1票
    小明-->拿到了第-1票
    黄牛党-->拿到了第0票

    */
posted @   gzs1024  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示