同步代碼塊
阿新 • • 發佈:2017-06-05
sta 同一時間 解決 使用 .cn his 一個 except style
package tongbu.cn; /* * 多個線程同時操作同一資源,會引起賣出的票為負數,為了解決這個問題,就要使用同步 * 所謂同步,就是多個操作在同一時間段內 只能有一個線程進行 * 同步代碼塊的格式 * synchronized(同步對象){ * 需要同步的代碼 * } */ //一個類實現runnable class TongBuDaiMa implements Runnable{ private int tiket = 5; public void run(){ for (int i = 0; i < 100; i++) {//判斷票數是否大於0 ,大於0的話就賣票 //同步代碼塊 synchronized (this) { if (tiket>0) { //設置線程之間延遲 try{Thread.sleep(50);} catch(Exception e){} System.out.println("tiket = "+ tiket--); } } } } }public class TongBu { public static void main(String[] args) { TongBuDaiMa tb = new TongBuDaiMa(); Thread tbd1 = new Thread(tb); Thread tbd2 = new Thread(tb); Thread tbd3 = new Thread(tb); tbd1.start(); tbd2.start(); tbd3.start(); } }
同步代碼塊