java基础--24.多线程的应用--电影院卖票程序的实现
来源:互联网 发布:淘宝卖面膜怎么样 编辑:程序博客网 时间:2024/05/01 14:20
A.多线程应用–电影院卖票程序的实现
A:继承Thread类 B:实现Runnable接口
电影院卖票程序出问题
为了更符合真实的场景,加入了休眠100毫秒。
多线程卖票过程中可能出现的问题:
a:同一张票多次出售
CPU的一次操作必须是原子性的
b:负数票
随机性和延迟导致
多线程安全问题产生的原因(也是我们以后判断一个程序是否有线程安全问题的依据)
A:是否有多线程环境 有!
B:是否有共享数据 有!
C:是否有多条语句操作共享数据 有!
B.同步解决线程安全问题
1.同步代码块
synchronized(对象) { 需要被同步的代码; }
这里的锁对象可以是任意对象,多个线程同时持有的必须是同一把锁(同一个对象)。
2.同步方法
把同步加在方法上。
这里的锁对象是 this
3.静态同步方法
把同步加在静态方法上。
静态方法的锁对象是:当前类的字节码文件对象
同步的特点
- 前提:多个线程
- 解决问题的时候需要注意:多个线程使用的是同一个锁对象
- 同步的好处:同步的出现解决了多线程的安全问题
- 同步的弊端:当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率
回顾以前的线程安全的类
A:StringBuffer
B:Vector
C:Hashtable
线程安全的类,效率都比较低
D:如何把一个线程不安全的集合类变成一个线程安全的集合类?
用Collections工具类的方法即可。
举例:
List<String> list1 = new ArrayList<String>(); //线程不安全 List<String> list2 = Collections .synchronizedList(new ArrayList<String>()); //线程安全
1 0
- java基础--24.多线程的应用--电影院卖票程序的实现
- 多线程实现卖票的例子
- java简单的卖票程序
- 多线程--简单的卖票例子--基础
- 使用Java实现的简易多窗口卖票程序
- java多线程重复卖票的问题
- JAVA多线程实现模拟卖票
- 共享内存的创建 实现卖票的程序
- Java基础——多线程+卖票程序+同步函数-单例设计模式+死锁
- 多线程之卖票程序
- 电影院卖票问题
- 实现Runnable 多线程卖票
- 多线程runnable实现卖票
- Java 多线程卖票演示
- Java多线程-卖票
- Java 多线程卖票
- java多线程卖票问题。
- Java 多线程卖票例子
- [iOS tableViewCell 复用] xib自定义cell 修改cell中按钮状态 出现按钮状态被复用
- java代码使用ftp上传图片失败的一个问题
- 正确方法将电子书放到Kindle的documents文件夹,还是看不了书?
- 媒体捕捉 - AVCaptureSession
- ubuntu14.04中更改python版本
- java基础--24.多线程的应用--电影院卖票程序的实现
- H5移动应用的发布优化(二)JS/CSS优化
- css三角
- [LeetCode]37. Sudoku Solver
- 面试总结
- 结构体理解与应用
- 用xcode编写python
- java自带线程池和队列详细讲解
- js的36个设计模式:结构型模式