标签:vat 解决 sync AC rri stat interrupt 方法 rate
多个线程调用同一个变量的时候,因为一个时间点只有一个线程在跑,就会产生一些线程改变了这个变量,但是其它的线程却还是根据之前的变量在跑
两个卖票的线程,票不为0时进行买票,但是当两个线程都进行买票的方法中时,一个线程已经把票卖完了,但是另一个线程的卖票程序还在跑,所以就开始卖负票了
使用同步代码块
1 public class Demo { 2 public static void main(String[] args) { 3 Ticket t = new Ticket(); 4 new Thread() { //线程一 5 6 @Override 7 public void run() { 8 try { 9 this.sleep(10); 10 } catch (InterruptedException e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 t.saleTicket(); 15 } 16 }.start(); 17 18 new Thread() { //线程二 19 20 @Override 21 public void run() { 22 try { 23 this.sleep(100); 24 } catch (InterruptedException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } 28 t.saleTicket(); 29 } 30 }.start(); 31 32 } 33 } 34 35 class Ticket { 36 private int ticket = 100; 37 public void saleTicket() { 38 while (ticket != 0) { 39 synchronized(Ticket.class) { 40 System.out.println("...这是第" + ticket-- + "号票"); 41 } 42 } 43 } 44 }
标签:vat 解决 sync AC rri stat interrupt 方法 rate
原文地址:https://www.cnblogs.com/Dbbf/p/9175144.html