溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

多線程(一、線程安全案例)

發(fā)布時間:2020-07-24 13:38:21 來源:網(wǎng)絡(luò) 閱讀:542 作者:shayang88 欄目:編程語言

案例:

假設(shè)有四個人,頻繁地通過海關(guān)出口,規(guī)定每次只能通過一個人,通過一個人時,將通過海關(guān)的總?cè)舜渭?,同時記錄該次通過人的姓名和出生地,如果出生地和名字不一致,不允許通過。

海關(guān)代碼

package com.jane.service;

/**
 * 海關(guān)入口
 */
public class GateWay {
    private int counter = 0;
    private String name = "無名";
    private String address = "無地址";
# 
    /**
     * 通行
     * @param name
     * @param address
     */
    public void pass(String name, String address) {
        this.counter++;
        this.name = name;
        this.address = address;
        checkPassport();
    }

    /**
     * 檢查護(hù)照
     */
    private void checkPassport() {
        //名字和地址匹配上才能通過
        if(!this.name.equals(this.address)) {
            System.out.println("禁止通行:" + "第" + this.counter + "人,姓名:" + this.name + ",來自:" + this.address);
        }
    }

}

人的代碼

package com.jane.service;

/**
 * 人模擬線程,循環(huán)入關(guān)
 */
public class Person extends Thread{
   private final GateWay gateWay;
   private final String name;
   private final String address;

   public Person(GateWay gateWay, String name, String address) {
       this.gateWay = gateWay;
       this.name = name;
       this.address = address;
   }

   public void run() {
       System.out.println(this.name + ",開始入關(guān)");
       while(true) {
          this.gateWay.pass(this.name, this.address);
       }
   }
}

啟動函數(shù)

System.out.println("開始入關(guān)");
        GateWay gate = new GateWay();
        new Person(gate, "張三", "張三").start();
        new Person(gate, "李四", "李四").start();
        new Person(gate, "王五", "王五").start();
        new Person(gate, "趙六", "趙六").start();

運行結(jié)果

多線程(一、線程安全案例)

線程不安全?。。。。。。。。。。?!

優(yōu)化后(synchronized),線程安全

多線程(一、線程安全案例)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI