java線程同步--同步代碼塊


package com.LearnJava.Thread;
/*
    同步代碼塊
    synchronized(同步監視器){
        //需要同步的代碼
    }
    同步監視器:俗稱 鎖,可以是任何實例化的類.但是需要共用同一個實例.
 */
class WindowSell implements Runnable{
    Object obj = new Object();
    private int ticket = 100;
    @Override
    public void run() {
        while (true) {
            synchronized(obj){
                if (ticket > 0) {
                    System.out.println(Thread.currentThread().getName() + "sell " + ticket--);
                }else{
                    break;
                }
            }
            Thread.yield();
        }

    }
}
public class ThreadTestTicket {
    public static void main(String[] args) {
        WindowSell win = new WindowSell();
        Thread t1 = new Thread(win);
        t1.setName("1號窗口");
        Thread t2 = new Thread(win);
        t2.setName("2號窗口");
        Thread t3 = new Thread(win);
        t3.setName("3號窗口");

        t1.start();
        t2.start();
        t3.start();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM