代码如下:

package demo2;public class ThreadTest {public static void main(String[] args) {Runnable runnable=new Runnable() {private int ticket=100;//电影票数@Overridepublic void run() {while(true){if(ticket>0){try {Thread.sleep(10);//执行卖票操作花费的时间} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket--+"张票");}}}};Thread thread0=new Thread(runnable);Thread thread1=new Thread(runnable);Thread thread2=new Thread(runnable);thread0.start();thread1.start();;thread2.start();}
}

最后一部分输出如下:

Thread-0正在卖第7张票
Thread-1正在卖第6张票
Thread-2正在卖第5张票
Thread-0正在卖第4张票
Thread-1正在卖第3张票
Thread-2正在卖第2张票
Thread-0正在卖第1张票
Thread-1正在卖第0张票
Thread-2正在卖第-1张票

可见线程不安全~

同步代码块解决线程安全,代码如下:

package demo2;public class ThreadTest {public static void main(String[] args) {Runnable runnable=new Runnable() {private int ticket=10000;//电影票数private Object object=new Object();@Overridepublic void run() {while(true){synchronized (object){if(ticket>0){try {Thread.sleep(10);//执行卖票操作花费的时间} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket--+"张票");}}}}};Thread thread0=new Thread(runnable);Thread thread1=new Thread(runnable);Thread thread2=new Thread(runnable);thread0.start();thread1.start();;thread2.start();}
}

模拟电影院的买票过程演示线程安全问题相关推荐

  1. Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

    模拟12306买票过程 共享资源,并发(线程安全) Web12306.java /*** 共享资源,并发(线程安全)* @author Administrator**/ public class We ...

  2. 程序模拟电影院窗口卖票,多线程Demo

    某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票 卖电影票Demo 实现步骤 1.SellTicket类 2.SellTicketDemo测试类 3.测 ...

  3. Java线程同步-模拟买票

    文章首发于 2020-11-29 知乎文章:Java线程同步-模拟买票 作者:落雨湿红尘(也是我o) 01 导语 本文使用JAVA代码模拟买票场景下的业务交互,通过示例讲解线程的初始化.线程同步等ja ...

  4. java模拟多线程买票问题

    多线程买票是java中的一个经典案例,其主要思想无非包括2点,synchronized和锁,两者中,前者实现同步,后者为同步的线程提供锁,从而实现多个线程共享同一份资源时候,能够同步进行; 经典的方式 ...

  5. 【swjtu】数据结构实验3_基于循环队列的排队买票模拟程序

    实验内容及要求: 编程建立循环队列存储结构,对排队买票过程进行模拟.要求程序在控制台屏幕上显示字符菜单: 1. 排队--输入新到达的买票人姓名,加入买票队列中: 2. 售票--排队队列中最前面的人购票 ...

  6. 多线程(并发)买票的案例详解同步代码块和同步方法 (复习)

    文章目录 前言 简单的原理: 队列+锁 常见的买票案例(线程安全:多个线程操作同一个数据.) 结果: 使用同步代码块或者同步方法(解决线程不安全的问题) 添加的方式一:synchronized 关键字 ...

  7. 【转】女孩蓉蓉买票回家的曲折经历(多图)

       虽然春节马上就要过去了,偶然间看到这么一篇文章,特意转载一哈,可以当做一个故事来看. 今年就要大学毕业了,我到北京来实习,快过年了,我想家里的大白猫了. 我想家乡的热干面了,北京吃不到正宗的. ...

  8. 使用同步机制解决线程安全问题

    线程的生命周期: 什么情况会产生线程安全问题? 当多个线程同时共享同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,即产生线程安全问题.读的操作不会发生线程安全问题. 例子:上文中的卖票 ...

  9. 解决线程安全问题的两种办法

    package com.xt.java;/*** 创建3个窗口卖票,总票数为100张 使用实现Runnable接口的方式* 问题一:买票过程中,出现了重票.错票-->出现了线程安全问题* 问题出 ...

最新文章

  1. linear-gradient 百分比以及斜角的使用
  2. python 字典的一些简单操作
  3. 基于python、虹软实现人脸检测,人脸识别
  4. ios 横向滚轮效果_ios横向菜单+页面滑动
  5. WebLogic11g-常用运维操作
  6. 4qam、16qam、64qam、256qam理论仿真曲线
  7. 【C++ Priemr | 15】派生类向基类转换的可访问性
  8. CarbonData:大数据融合数仓新一代引擎
  9. 只用一个WiFi,渗透进企业全部内网
  10. html特殊符号sm,以前搜集的一些资料—html中的特殊字符(2)
  11. js中判断数组中是否含有某个字符串方法
  12. lambda表达式学习使用实例
  13. centos7修改mysql默认端口号_修改mysql默认端口方法(linux centos 7)
  14. The Book of Qt4 : The Art of Building Qt Application 阅读笔记
  15. python rgb565_RGB565的转换
  16. Win10 系统C盘 容量变大,如何清理,亲测有效
  17. jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=0x800401F3L
  18. oracle11g认证,ORACLE11g-OCP认证(甲骨文专家级数据库工程师)
  19. 计科实训 餐馆点菜系统
  20. P2132 小Z的队伍排列-杨氏矩阵与hook定理

热门文章

  1. 步科ET070不能启动
  2. 「硬见小百科」深入剖析电感电流
  3. 杭州电子科技大学保研计算机,杭州电子科技大学计算机学院计算机技术(专业学位)保研细则...
  4. 从Big Dog到Spot Mini:波士顿动力「四足机器人」进化史概览
  5. 辅助驾驶功能开发-执行器篇(02)-横向辅助功能(行车)对电动助力转向系统需求
  6. DDOS高防IP的用途
  7. 十步杀一人,千里不留行
  8. Linux部署tomcat项目的方法,使用linux部署tomcat项目
  9. 怎样制作一个二维MG动画
  10. 【Python】中秋节快到了,这才是程序员该赏的“月亮”(3D+音频+源码)