java火车站卖票程序(线程等待)
来源:互联网 发布:seo原创文章代写 编辑:程序博客网 时间:2024/04/29 13:05
package com.java.thread.synch;/** * 卖票演示 * @author Administrator * 两个车站卖100张票 */public class SellTicket {static Object obj=new Object();static int Count=100;public static void main(String[] args){//StationOne one =new StationOne(obj);//StationTwo two =new StationTwo(obj);//Thread th1=new Thread(one);//Thread th2=new Thread(two);//th1.start();//th2.start();Thread th1=new Thread(new A());Thread th2=new Thread(new A());th1.setName("车站一");th2.setName("车站二");th1.start();th2.start();}}class A implements Runnable{//String obj=new String("aa");@SuppressWarnings("static-access")public void run(){String obj="aaa";//不能是String obj=new String("aa");aa存放在堆区//有两个obj,但是它们都是指向同一个aaa,aaa存放在数据区 ,数据区只有一份拷贝while(true){synchronized (obj) {if(SellTicket.Count>0){try {Thread.currentThread().sleep(30);} catch (InterruptedException e) {//TODO Auto-generated catch blocke.printStackTrace();}//System.out.printf("%s卖出了第%d张票\n",Thread.currentThread().getName(),SellTicket.Count);System.out.println(Thread.currentThread().getName()+SellTicket.Count);SellTicket.Count--;}else{break;}}}}}/** * 车站一 * @author Administrator * */class StationOne implements Runnable{private Object obj;public StationOne(Object obj){this.obj=obj;}@SuppressWarnings("static-access")public void run() {synchronized(obj){while(SellTicket.Count>0){obj.notify();try {Thread.currentThread().sleep(60);} catch (InterruptedException e1) {e1.printStackTrace();}System.out.printf("\t\t\t\t车站一卖出了第%d张票\n",SellTicket.Count);SellTicket.Count--;try {obj.wait();} catch (InterruptedException e) {e.printStackTrace();}}obj.notify();}}}/** * 车站二 * @author Administrator * */class StationTwo implements Runnable{private Object obj;public StationTwo(Object obj){this.obj=obj;}@SuppressWarnings("static-access")public void run() {synchronized(obj){while(SellTicket.Count>0){obj.notify();try {Thread.currentThread().sleep(60);} catch (InterruptedException e1) {e1.printStackTrace();}System.out.printf("车站二卖出了第%d张票\n",SellTicket.Count);SellTicket.Count--;try {obj.wait();} catch (InterruptedException e) {e.printStackTrace();}}obj.notify();}}}
0 0
- java火车站卖票程序(线程等待)
- JAVA线程模拟火车站卖票
- 编写一个 火车站卖票程序--3个窗口同时售票
- JAVA线程实例-----卖票
- java 线程同步--卖票问题
- Java 线程同步 卖票问题
- java卖票线程问题synchronized
- java简单的卖票程序
- 由卖票程序来理解线程
- 线程,卖票
- 卖票线程
- java中synchronized修饰代码块(两种创建线程的方式讲解卖票程序)
- Java线程同步卖票问题解决方法
- Java之多线程Runnable(1)卖票-yellowcong
- JAVA并发_卖票程序_Demo01
- 【第十五课】线程---线程的实例:卖票程序
- 【第十五课】线程---线程的实例:卖票程序(my)
- 创建两个线程模拟火车站两个窗口售票程序
- 第17周项目整数中的最大数与最小数的差值
- 黑马程序员——收集起来的ios笔试题——黑马 ios 技术博客
- 大规模及时通讯im服务器系统构架思路
- strlen的三种实现
- 转载:总结iOS 8和Xcode 6的各种坑
- java火车站卖票程序(线程等待)
- 研究一种应用于工程机械的智能监控系统
- P2P后台终结者源码.分享QT+WIN SDK实现.自动扫描后台关闭P2P后台进程
- 窗口刷新问题(WM_PAINT)
- 2014年12月20日10:54:36
- 第十七号项目4——日期结构体
- linux md5 加密字符串和文件方法
- 黑马程序员——java开发前奏之基础常识-第1天-第1集
- 行为型模式之模板方法模式