14.1、机场过安检
Single Thread Execution 模式是指在同一时刻只能有一个线程去访问共享资源,就 像独木桥一样每次只允许一人通行,简单来说, Single Thread Execution 就是采用排 他式的操作保证在同一时刻只能有一个线程访问共享资源。
相信大家都有乘坐飞机的经历,在进入登机口之前必须经过安全检査,安检口类似于独 木桥,每次只能通过一个人,工作人员除了检査你的登机牌以外,还要联网检查身份证信息 以及是否携带危险物品,如下图所示。
14.1.1、非线程安全
先模拟一个非线程安全的安检口类,旅客(线程)分别手持登机牌和身份证接受工作人 员的检查,示例代码如下所示。
代码1:旅客类
package com.bjsxt.chapter14.demo01;
/**
* @author wmr
* @date 2021/2/22
*/
public class Passengers extends Thread {
/**
* 旅客身份证号
*/
private String idCard;
/**
* 旅客登机牌
*/
private String boardingPass;
/**
* 飞机安检
*/
private FlightSecurity flightSecurity;
/**
* 构造方法
*/
public Passengers(FlightSecurity flightSecurity,String idCard,String boardingPass){
this.idCard = idCard;
this.boardingPass = boardingPass;
this.flightSecurity = flightSecurity;
}
/**
* 安检
*/
@Override
public void run(