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

经典的方式是synchronized + 锁对象,同样采用诸如Lock即显式的声明concurrent中的锁也可以实现同样的效果,可根据实际情况酌情使用,以下分别采用不同的方式实现模拟多窗口买票场景

方式1:
public class SaleTicket implements Runnable{

public int total;public int count;public SaleTicket() {total = 100;count = 0;
}public void run() {while (total > 0) {synchronized (this) {if(total > 0){try {Thread.sleep(new Random().nextInt(1000));} catch (Exception e) {e.printStackTrace();}count++;total--;System.out.println(Thread.currentThread().getName()+"\t当前票号:" + count);}}}
}public static void main(String[] args) {SaleTicket st = new SaleTicket();for(int i=0;i<=5;i++){new Thread(st, "

java模拟多线程买票问题相关推荐

  1. Java之多线程买票程序

    Java之多线程买票程序 1.要求 要求五个线程,分别命名为售票窗口1.售票窗口 2.......售票窗口5, 一共100张票,每个售票窗口卖票的数量大致相同(20)张卖票时给与编号,每张票唯一. 每 ...

  2. java模拟火车站买票的过程_Java常用代理

    在我们通常的应用中,代理模式也是我们常用的设计模式之一.所谓的代理模式是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象. 为什么要采用这种间接的形式来调用对象呢?一般是因 ...

  3. java 实现多线程买票

    今天同桌问了一个我一个多线程的问题,其实很简单,但是,我没有马上解决 今天记录一下, synchronized 加锁,有一点小心的是,这个只能对对象加锁,因为所有的对象的父亲都是object 其中on ...

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

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

  5. java 买票 多线程_java多线程买票问题

    自己写了一个多线程买票的实例,运行结果也对了,但是自己解释不了,谁能帮忙解释一下为什么结果会正确?import java.util.concurrent.ExecutorService; import ...

  6. java多线程买票实例

    3个窗口同时买票 * * 同步: * 1:同步代码块 * synchronized(锁对象(唯一)){ * * -需要被同步的代码 * * } * 2:同步方法 * 修饰符 synchronized ...

  7. 使用多线程模拟电影院买票。

    模拟唐僧师徒4人买电影票.电影票10元一张,唐僧拿着一张50元的.孙悟空那和 猪八戒都拿着一张20的. 沙僧拿着一张10元的.此时售票员手中只有一个10元的. 模拟他们4个人买票. package c ...

  8. Python 每日一记210java模拟电影院买票

    package mypackage;/***电影院买票系统* 注意泛型和容器的使用,特别注意容器内一次性添加多个元素的方法Arrays.asList(1,2,3,4,5)* 注意线程同步问题的解决,特 ...

  9. Java 模拟多线程并发案例

    一.使用 CountDownLatch 模拟多线程并发(并行) CountDownLatch 介绍: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBar ...

最新文章

  1. ajax的auto是true,一个AJAX自动完成功能的js封装源码[支持中文]
  2. Ubuntu 使用国内apt源
  3. Eclipse Collections随Java版本的演变
  4. [Leetcode][第257题][JAVA][二叉树的所有路径][BFS][DFS]
  5. I00037 亏数(Deficient number)
  6. jQuery-图片上传裁剪插件--imgAreaSelect(分析一) 放大缩小
  7. rtsp实时流通过rtmp推送到服务端
  8. python3 os模块使用_Python3-os模块-操作系统的各种接口
  9. GBK编码表与编码字库
  10. linux服务器 网速测试
  11. 网页抓取工具火车头如何采集关键词
  12. mysql 主从ppt_MYSQL主从复制和读写分离.ppt
  13. 《图解网络硬件》网络硬件通用基础知识
  14. 加减法叫做什么运算_加减法的意义及运算定律、性质
  15. 上古卷轴5:天际(重制版)关于寒霜之秋(frostfall)保暖度与覆盖度为0的解决办法
  16. 实验六 —— 火焰传感器
  17. android jni黑屏,android使用高德地图出现诡异的:JNI DETECTED ERROR IN APPLICATION
  18. 安装CAD缺少html,Win10系统安装CAD2007失败缺少.NET组件如何解决
  19. golang GC垃圾回收机制
  20. 如何让Fresco支持HEIF/HEIC图片格式

热门文章

  1. 习题1083字符转换
  2. Hadoop系列之五:MapReduce进阶(2)
  3. Wireshark数据包分析之数据包信息解读
  4. codevs——1742 爬楼梯
  5. HDU 3555 Bomb(数位DP模板啊两种形式)
  6. [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  7. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3
  8. 教你在Yii2.0框架中如何创建自定义小部件
  9. C# 连接SQL Server数据库的几种方式--server+data source等方式
  10. delphi中move函数的用法 转