1. 程式人生 > 實用技巧 >多執行緒操作同一個物件的例子(引出併發)

多執行緒操作同一個物件的例子(引出併發)

多執行緒操作同一個物件的例子(引出併發)

//多個執行緒同時操作同一個物件
//買火車票的例子

//發現問題:多個執行緒操作同一個資源的情況下,執行緒不安全,資料混亂。
public class TestThread4 implements Runnable{

    //票數
    private int ticketNums = 10;

    @Override
    public void run() {
        while (true){

            if (ticketNums<=0){
                break;
            }

            //模擬延時
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+"拿到了第"+ticketNums--+"票");
        }
    }

    public static void main(String[] args) {
        TestThread4 ticket = new TestThread4();

        new Thread(ticket,"小明").start();
        new Thread(ticket,"小紅").start();
        new Thread(ticket,"黃牛黨").start();
    }
}