package com.sxt.syn;
/*** 快乐影院* * @author **/
public class HappyCinema {public static void main(String[] args) {Cinema c = new Cinema(2,"happy sxt");new Thread(new Customer(c,2),"老高").start();new Thread(new Customer(c,1),"老裴").start();}}
//顾客
class Customer implements Runnable{Cinema cinema;int seats; public Customer(Cinema cinema, int seats) {this.cinema = cinema;this.seats = seats;}@Overridepublic void run() {synchronized(cinema) {boolean flag = cinema.bookTickets(seats);if(flag) {System.out.println("出票成功"+Thread.currentThread().getName()+"-<位置为:"+seats);}else {System.out.println("出票失败"+Thread.currentThread().getName()+"-<位置不够");         }}}}//影院
class Cinema{int available; //可用的位置String name; //名称public Cinema(int available, String name) {this.available = available;this.name = name;}//购票public boolean bookTickets(int seats) {System.out.println("可用位置为:"+available);if(seats>available) {return false;}available -=seats;return true;}
}package com.sxt.syn;import java.util.ArrayList;
import java.util.List;/*** 快乐影院* * @author 裴新 QQ:3401997271**/
public class HappyCinema2 {public static void main(String[] args) {//可用位置List<Integer> available =new ArrayList<Integer>();available.add(1);available.add(2);available.add(3);available.add(6);available.add(7);//顾客需要的位置List<Integer> seats1 =new ArrayList<Integer>();seats1.add(1);seats1.add(2);List<Integer> seats2 =new ArrayList<Integer>();seats2.add(3);seats2.add(6);SxtCinema c = new SxtCinema(available,"happy sxt");new Thread(new HappyCustomer(c,seats1),"老高").start();new Thread(new HappyCustomer(c,seats2),"老裴").start();}}
//顾客
class HappyCustomer implements Runnable{SxtCinema cinema;List<Integer> seats; public HappyCustomer(SxtCinema cinema, List<Integer> seats) {this.cinema = cinema;this.seats = seats;}@Overridepublic void run() {synchronized(cinema) {boolean flag = cinema.bookTickets(seats);if(flag) {System.out.println("出票成功"+Thread.currentThread().getName()+"-<位置为:"+seats);}else {System.out.println("出票失败"+Thread.currentThread().getName()+"-<位置不够");         }}}}//影院
class SxtCinema{List<Integer> available; //可用的位置String name; //名称public SxtCinema(List<Integer> available, String name) {this.available = available;this.name = name;}//购票public boolean bookTickets(List<Integer> seats) {System.out.println("欢迎光临"+this.name+",当前可用位置为:"+available);List<Integer> copy = new ArrayList<Integer>();copy.addAll(available);//相减copy.removeAll(seats);//判断大小if(available.size()-copy.size() !=seats.size()) {return false;}//成功available = copy;return true;}
}

多线程_并发_同步_快乐影院相关推荐

  1. 实时监控Mysql等数据库变化_进行数据同步_了解Maxwell_--MaxWell工作笔记001

    1.Maxwell 是一个读取 MySQL binlogs日志,这样就可以知道数据库修改的内容_ 并将修改行字段的更新用json的格式 ,写入 Kafka, Kinesis, RabbitMQ, Go ...

  2. 实时监控Mysql数据库变化_进行数据同步_了解Canal_---Canal工作笔记001

    1.Canal是阿里巴巴旗下的一款开源项目,纯Java开发. 2.由来:阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,从2010年开 ...

  3. 新旧电脑无流量数据备份_电脑数据转移_电脑数据同步_不需要流量的电脑数据同步_将旧电脑的数据同步到新电脑

    今日入手了一台新电脑--旧电脑是啥参照我之前的博客https://blog.csdn.net/Mr_liu_666/article/details/102139752 联想G50实在是撑不住了,主要是 ...

  4. 实时监控Mysql等数据库变化_进行数据同步_了解Debezium_--Debezium工作笔记001

    1. Debezium是一个开源项目 2.为捕获数据更改(change data capture,CDC)提供了一个低延迟的流式处理平台 3.安装并且配置Debezium去监控你的数据库,应用就可以消 ...

  5. JAVA Java多线程与并发库

    Java多线程与并发库 同步方式 import javax.xml.stream.events.StartDocument;public class TestSynchronized {public ...

  6. java的知识点32——多线程 并发同步的 性能分析、快乐影院  订票操作

    多线程  并发  同步  性能分析 /*** 线程安全: 在并发时保证数据的正确性.效率尽可能高* synchronized* 1.同步方法* 2.同步块* @author Administrator ...

  7. Java多线程与并发库高级应用--18_传智播客_张孝祥_java5阻塞队列的应用

    Java多线程与并发库高级应用--18_传智播客_张孝祥_java5阻塞队列的应用 原创:徐工 2018-5- 5 17.10 package cn.itcast.heima2; import jav ...

  8. java 多线程 并发 面试题_最常见的15个Java多线程,并发面试问题

    假设你有三个线程T1,T2,T3.你如何能保证线程T2在线程T1后运行,T3在T2后运行 这个线程面试问题大多是在第一轮或电话筛选轮次中会被问到的,这个多线程问题的目的是检查候选人对"joi ...

  9. java多线程与并发_漫画 | Java多线程与并发(一)

    1.什么是线程? 2.线程和进程有什么区别? 3.如何在Java中实现线程? 4.Java关键字volatile与synchronized作用与区别? volatile修饰的变量不保留拷贝,直接访问主 ...

  10. java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...

最新文章

  1. 全球最性感的13大仿真机器人 功能太全难把持!
  2. 轨迹系列8——记某真实项目中轨迹展示查询效率优化方案一(初步设计)
  3. extjs年月日时分选择控件_UI设计|网站公共控件及交互事件
  4. 东南亚的IT公司,我劝你善良!
  5. 配置环境变量OpenJDK和OracleJDK区别
  6. 华为数通HCIA笔记(OSI七层)
  7. 【iqiqiya专版】CCTV(央视网)视频解析工具V1.0
  8. 一维搜索---黄金分割法
  9. 罗永浩:做直播带货很赚钱,一晚上利润轻松几百万 比卖锤子手机过瘾
  10. android屏幕录制
  11. ubuntu清除dns缓存_如何在Ubuntu上清除DNS缓存
  12. RxSwift系列—RxSwift核心逻辑
  13. html页面整体偏移了怎么办,html2canvas生成的图片偏移不完整的解决方法
  14. 【解决】client does not support authentication转载的两种解法
  15. python爬虫:抓取道指成分股数据
  16. php 正则匹配座机号、手机号
  17. bzoj 2565 manacher
  18. Android 一个TextView中设置文字不同字体大小和颜色的最完整方法
  19. 关于forward(转发)和redirect(重定向)的区别
  20. php团购实现,团购网站的设计与实现(PHP,MySQL)(含录像)

热门文章

  1. 如何在金蝶服务器增加用户,详解金蝶KIS记账王如何新增用户
  2. InfofoIE浏览器的好助手(转)
  3. 基于JSP和sql server小区物业管理系统毕业论文
  4. 什么是句柄什么是句柄对象
  5. jetbrains goland配置go开发环境
  6. 主成分与因子分析异同_主成分分析与因子分析在SPSS中的区别
  7. 网上好用的大数据支持的舆情分析系统工具整合
  8. greensock下载_GreenSock动画平台初学者指南
  9. DELL XPS M1530安装MAC OS X Lion 10.7.3经验分享!
  10. Android 开发即时聊天工具 YQ :(一) Socket 初步