在这里贴出这个代码,有两个原因:
- 认识同一种需求场景,可以由不同的实现方式
- 认识使用设计模式以后,代码编写的逻辑是如何变化的
代码都是线程安全的,使用synchronized来实现同步方法和同步块的声明:
第一种代码是
购票的客户,客户为主要操作人
package top.xq.thread;
import java.util.ArrayList;
import java.util.List;
/**
* 类名称 CinemaAndCustomer
* 说明 演示影院售票以及客户买票的过程;
* 客户可以一次性买多张票;
* 影院可以一次售卖多张票
* 作者 IT小黑
* 日期 2019/10/15 13:23
*/
public class CinemaAndCustomer {
public static void main(String[] args) {
// 影院里的座位号码
List<Integer> seats = new ArrayList<>();
seats.add(1);
seats.add(2);
seats.add(3);
seats.add(4);
seats.add(5);
CinemaLocal cinemaLocal = new CinemaLocal("万达影城", seats);
// 定义客户进行购票