您好,登錄后才能下訂單哦!
假設(shè)有四個人,頻繁地通過海關(guān)出口,規(guī)定每次只能通過一個人,通過一個人時,將通過海關(guān)的總?cè)舜渭?,同時記錄該次通過人的姓名和出生地,如果出生地和名字不一致,不允許通過。
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);
}
}
}
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();
線程不安全?。。。。。。。。。。?!
免責(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)容。