併發(不安全示例)
阿新 • • 發佈:2021-12-10
併發
解決辦法:佇列 + 鎖
執行緒不安全示例(操作同一個物件)
public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); // BuyTicket buyTicket1 = new BuyTicket(); // BuyTicket buyTicket2 = new BuyTicket(); new Thread(buyTicket,"張三").start(); new Thread(buyTicket,"李四").start(); new Thread(buyTicket,"王五").start(); } /* 買票 */ static class BuyTicket implements Runnable{ int ticket = 20; boolean flag = false; @Override public void run() { while(!flag){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } buy(); } } private void buy(){ System.out.println(Thread.currentThread().getName()+"買到了:"+ticket--); if(ticket <= 0){ flag = true; } } }