博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 多线程同步锁的使用 三个售票窗口同时出售20张票
阅读量:5272 次
发布时间:2019-06-14

本文共 1035 字,大约阅读时间需要 3 分钟。

package Thread;/*** * 三个售票窗口同时出售20张票*程序分析:1.票数要使用同一个静态值 *2.为保证不会出现卖出同一个票数,要java多线程同步锁。*设计思路:1.创建一个站台类Station,继承Thread,重写run方法,*在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!*3.创建主方法调用类*/public class Station1 extends Thread{//通过构造方法给线程名字赋值public Station1(String name){super(name);//给线程名字赋值}//为了保持票数的一致,票数要静态static int tick = 20;//创建一个静态钥匙static Object ob = "aa";//值是任意的//重写run方法 实现买票操作public void run(){while(tick>0){synchronized(ob){/*** 这个很重要, 必须使用一个锁* 进去的人会把钥匙拿在手上 出来才把钥匙拿出来*/if(tick>0){System.out.println(getName()+"卖了第"+tick+"张票");tick--;}else{System.out.println("票卖完了");}}try {sleep(1000);//休息一秒} catch (Exception e) {e.printStackTrace();}}}} package Thread;public class MainClass1 {/*** java 多线程同步锁的使用* 示例 三个售票窗口同时出售10张票*/public static void main(String[] args) {//实例化站台对象 并为每一个站台取名字Station1 station1 = new Station1("窗口1");Station1 station2 = new Station1("窗口2");Station1 station3 = new Station1("窗口3");//让每一个站台对象各自开始工作station1.start();station2.start();station3.start();}}

 

转载于:https://www.cnblogs.com/ls1783047205/p/9751027.html

你可能感兴趣的文章
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
c# 文件笔记
查看>>
第一页 - 工具的使用(webstorm)
查看>>
Linux 进程资源用量监控和按用户设置进程限制
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
adidas crazylight 2018 performance analysis review
查看>>
typeset shell 用法
查看>>
python 之 循环语句
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
[转]ceph网络通信模块_以monitor模块为例
查看>>
HDOJ 1754 I Hate It(线段树基本操作)
查看>>