线程同步

线程同步(重点、难点)

并发

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

队列和锁

食堂排队

保证安全性,比如厕所可以上锁doge

锁机制synchronized synchronized

package com.zishi.syn;

//不安全的买票
//线程不安全,有负数
public class UnsafeBuyTicket {
   public static void main(String[] args) {
       BuyTicket buyTicket = new BuyTicket();

       new Thread(buyTicket,"小黄").start();
       new Thread(buyTicket,"老黄").start();//doge
       new Thread(buyTicket,"黄牛").start();
  }
}

class BuyTicket implements Runnable{

   //票
   private int ticketNums = 10;
   boolean flag = true;//外部停止方式

   @Override
   public void run() {
       //买票
       while (true){
           buy();
      }

  }

   private void buy(){
       //判断是否有票
       if(ticketNums<=0){
           flag = false;
           return;
      }
       //模拟延时
       try {
           Thread.sleep(1000);
      } catch (InterruptedException e) {
           e.printStackTrace();
      }

       //买票
       System.out.println(Thread.currentThread().getName()+"抢到了"+ticketNums--);
  }
}

每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

 

posted @ 2021-09-03 20:22  子时未临  阅读(139)  评论(0编辑  收藏  举报