java 多线程同步锁的使用 三个售票窗口同时出售20张票

1package Thread; 2/** 3* 4* 三个售票窗口同时出售20张票 5*程序分析:1.票数要使用同一个静态值 6 *2.为保证不会出现卖出同一个票数,要java多线程同步锁。 7*设计思路:1.创建一个站台类Station,继承Thread,重写run方法, 8*在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完! 9*3.创建主方法调用类 10*/ 11public class Station1 extends Thread{ 12//通过构造方法给线程名字赋值 13public Station1(String name){ 14super(name);//给线程名字赋值 15} 16//为了保持票数的一致,票数要静态 17static int tick = 20; 18//创建一个静态钥匙 19static Object ob = "aa";//值是任意的 20//重写run方法 实现买票操作 21public void run(){ 22while(tick>0){ 23synchronized(ob){ 24/** 25* 这个很重要, 必须使用一个锁 26* 进去的人会把钥匙拿在手上 出来才把钥匙拿出来 27*/ 28if(tick>0){ 29System.out.println(getName()+"卖了第"+tick+"张票"); 30tick--; 31}else{ 32System.out.println("票卖完了"); 33} 34} 35try { 36sleep(1000);//休息一秒 37} catch (Exception e) { 38e.printStackTrace(); 39} 40} 41} 42} 43 44 45 46package Thread; 47 48public class MainClass1 { 49/** 50* java 多线程同步锁的使用 51* 示例 三个售票窗口同时出售10张票 52*/ 53public static void main(String[] args) { 54//实例化站台对象 并为每一个站台取名字 55Station1 station1 = new Station1("窗口1"); 56Station1 station2 = new Station1("窗口2"); 57Station1 station3 = new Station1("窗口3"); 58//让每一个站台对象各自开始工作 59station1.start(); 60station2.start(); 61station3.start(); 62} 63}
点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java学习 Day01 多线程

Java学习Day01多线程Java多线程实现方式有2种1.继承Thread类,重写run方法案例测试类Thread01Javapackagetop.wanqq.thread;/@authorwanqq/publicclassThread01extendsThread@Overridepubli

java多线程的常见例子

一.相关知识:Java多线程程序设计到的知识:(一)对同一个数量进行操作(二)对同一个对象进行操作(三)回调方法使用(四)线程同步,死锁问题(五)线程通信 等等二.示例一:三个售票窗口同时出售20张票;程序分析:1.票数要使用同一个静态值 2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建

java多线程模拟售票,多个窗口售票

packagecom.ma.thread001;/多线程模拟售票,多个窗口售票@authorma/publicclassSellTicktDemoimplementsRunnable{/需求:多线程模

Java多线程同步示例(三个售票窗口同时出售20张票)

分析:1.票数要使用同一个静态值;2.为保证不会出现卖出同一个票数,要java多线程同步锁。3.有一个线程卖这张票时,其他线程要等这张票卖完!packageperson.xsc.practice;publicclassSaleWindowimplementsRunnableprivateintticket20;@Ov