JavaSE多线程之卖电影票案例

JavaSE多线程之卖电影票案例

1.继承Thread类的方式卖电影票

A:案例演示
	需求:某电影院目前正在上映贺岁大片,共有100张票,而它有3个售票窗口售票,请设计一个程序模拟该电影院售票。
	通过继承Thread类实现

在这里插入图片描述

2.实现Runnable接口的方式卖电影票

A:案例演示
	需求:某电影院目前正在上映贺岁大片,共有100张票,而它有3个售票窗口售票,请设计一个程序模拟该电影院售票。
	通过实现Runnable接口实现

在这里插入图片描述

3.买电影票出现了同票和负数票的原因分析

A:加入延迟
	电影院售票程序,从表面上看不出什么问题,但是在真实生活中,售票时网络是不能实时传输的,总是存在延迟的情况,所以,在出售一张票以后,需要一点时间的延迟
	改实现接口方式的卖票程序,每次卖票延迟100毫秒
B:出现问题了问题

在这里插入图片描述

4.同步代码块的方式解决线程安全问题及解释以及同步的特点及好处和弊端

A:同步代码块的格式
	格式:
	synchronized(对象){ //同步代码代码块上的锁,是一个互斥锁。
	    死循环
		需要同步的代码;
	}
	同步可以解决安全问题的根本原因就在那个对象上。该对象如同锁的功能
B:案例演示:	同步代码块的方式解决线程安全问题
C:同步的好处:	同步的出现解决了多线程的安全问题。
D:同步的弊端:	当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。

在这里插入图片描述

5.同步代码块的锁问题以及同步方法的应用和锁问题

A:案例演示:	同步代码块的锁问题
B:同步方法:	就是把同步关键字加到方法上
C:案例演示:	同步方法的锁对象是什么呢?
D:案例演示:	如果是静态方法,同步方法的锁对象又是什么呢?
同步代码块的锁对象:任意一个对象
同步方法的锁对象:是this
静态同步方法的锁对象:就是当前类对应的字节码文件对象

在这里插入图片描述

6.JDK5之后的Lock锁的概述和使用

A:Lock锁的概述
	可以理解同步代码块和同步方法的锁对象问题,但是并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock
B:Lock和ReentrantLock
	void lock() 加锁 
	void unlock() 释放锁 
C:案例演示:	Lock锁的使用
A:死锁问题概述
	如果出现了同步嵌套,就容易产生死锁问题
	是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象
	同步代码块的嵌套案例
	 死锁: 两个或者两个以上的线程,在抢占CPU的执行权的时候,都处于等待状态
	 举例:	中国人和美国人一起吃饭
 		中国人使用的筷子
 		美国人使用的刀和叉
		中国人获取到了美国人的刀
	   美国人获取到了中国人的一根筷子
B:案例演示:	死锁问题代码演示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值