多线程之多个窗口卖票02
来源:互联网 发布:沙宣男士洗发水 知乎 编辑:程序博客网 时间:2024/06/06 01:03
/*通过分析,发现,打印出0,-1,-2等错票。多线程的运行出现了安全问题。问题的原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行。导致共享数据的错误。解决办法:对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其他线程不可以参与执行。Java对于多线程的安全问题提供了专业的解决方式。就是同步代码块。synchronized(对象){需要被同步的代码}对象如同锁。持有锁的线程可以在同步中执行。没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。火车上的卫生间---经典。同步的前提:1,必须要有两个或者两个以上的线程。2,必须是多个线程使用同一个锁。必须保证同步中只能有一个线程在运行。好处:解决了多线程的安全问题。弊端:多个线程需要判断锁,较为消耗资源,*/class Ticket implements Runnable{private int tick = 1000;Object obj = new Object();public void run(){while(true){synchronized(obj)//监视器,锁,锁旗标{if(tick>0){//try{Thread.sleep(10);}catch(Exception e){}System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);}}}}}class TicketDemo2{public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
阅读全文
0 0
- 多线程之多个窗口卖票02
- 多线程之多个窗口卖票01
- 多线程经典问题之多窗口卖票
- 多线程之多窗口卖票&线程之间的通信
- Java 多线程实现多个窗口同时卖票
- Java 多线程之多个窗口售票问题
- 多线程同步:多窗口卖票
- 问题: 写一个多线程程序实现铁路卖票系统,4个窗口同时售票,线程同步
- 多线程卖票
- 多线程模拟卖票程序,并统计各窗口售出数量
- 编写一个 火车站卖票程序--3个窗口同时售票
- python中的多线程----以2个线程卖票为例
- 四个窗口卖票
- Java 多线程卖票演示
- 多线程,卖票系统
- 多线程之卖票程序
- Java多线程-卖票
- 卖票模拟多线程
- 线程池原理
- JS 原型
- 前端笔记——node.js
- 无限引流大助手3.0开源版
- Oracle中left join,right join,inner join分析
- 多线程之多个窗口卖票02
- 爬格子呀4-1
- SAPUI5教程——在XML View中使用$运算符
- 更新环境变量path厚java版本version不变
- socket传输小文件的一个思考
- 安装jdk1.8步骤简介
- 170道Java工程师面试题,你敢挑战吗?
- 实用小技巧备份
- Myeclipse2017最新版激活