买票(1)
来源:互联网 发布:四维星装饰选材软件 编辑:程序博客网 时间:2024/05/22 12:36
有100张票,各个车站都在卖,那么设计了多线程和线程安全的问题
方式一用线程同步锁synchronized
synchronized 声明在函数前或者声明在代码块之前(即:{}之前)
class ChePiao1 implements Runnabel{ public static int chepiao=100;--static 静态,作用是当同一个类被new多次时共享该变量 String aa=new String('1'); public void run() { while (true) { synchronize(aa) { if(chepiao>0) { System.out.println(Thread.currentThread.getName()+"卖出了序号为"+(101-chepiao)+"的票"); chepiao--; } else { break; } } } }}public class MaiPiao1{ public static void main(String[] args) { ChePiao mp1=new ChePiao(); **Thread chezhan1=new Thread(mp1);** chezhan1.setName("重庆车站"); chezhan1.start(); **Thread chezhan2=new Thread(mp1);** chezhan2.setName("成都车站"); chezhan2.start(); //上述注意的问题:线程同步问题,必须要等一个车站售完后里一个车站才能卖,还有就是在此处加粗的不分,公用一个cp1,所以能共享变量车票(chepiao),公用一把锁(aa) }}
方式二:
public class Maipiao2 { public static void main(String[] args) { ChePiao2 xc1=new ChePiao2(); xc1.setName("重庆车站"); xc1.start(); ChePiao2 xc2=new ChePiao2(); xc2.setName("成都车站"); xc2.start(); }}class ChePiao2 extends Thread{ public static int chepiao=100; public static String aa=new String("1");//由于要new两个该对象,为了保证共公用一把锁,加上static public void run() { while(true) { synchronized(aa) { if(chepiao>0) { System.out.println(Thread.currentThread().getName()+"卖出了序号为"+(101-chepiao)+"的票"); --chepiao; } else { break; } } } }}
0 0
- 买票(1)
- 排队买票(歌)
- 经典递归(排队买票)
- 火车站买票问题(poj 2828)
- Python-类01(计算买票问题)
- 设计模式之Proxy——买票篇(原创)
- 排队买票找钱(50元, 100元)
- iOS开发--多线程编程(二)NSThread买票
- POJ 2355 Railway tickets(线段dp 坐车买票问题)
- 买票系统模拟Java高并发(ConcurrentQueue的解决方案)
- Java之多线程AtomicInteger (多人买票) -yellowcong
- 沁园春-买票
- 沁园春 买票
- 买票难
- 买票找零
- 沁园春,买票
- 买票找零
- 买票事务
- PDF阅读
- 【spoj】【COT - Count on a tree】【可持久化线段树】
- ajax的基本流程
- JAVA蓝桥杯(19)密码发生器
- 笔试题15
- 买票(1)
- 奋斗
- web项目添加包的一些建议
- Queueing at Bank (25)
- 机器学习13大规模数据集
- BeautifulSoup安装,输入setup.py build后没反应----可能是命令错误!
- 线性表-链栈
- Apple 词典·再要你命 3000 | 美国传统大辞典 | Merriam Webster Collegiate Dict
- CMD 模块定义规范