java多线程售票问题_Java 多线程之多个窗口售票问题

/** 同步

* 这里有两种方式加锁

* 分别是

* 1.synchronized

* 2.lock()和unlock()*/

第一种:

packageRunnable接口;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/** 同步

* 这里有两种方式加锁

* 分别是

* 1.synchronized

* 2.lock()和unlock()*/

public class MyRunnable implementsRunnable {private int tickets = 100;//定义锁

private Lock lock = newReentrantLock();public voidrun() {while (true) {//加锁

lock.lock();if (tickets > 0) {try{

Thread.sleep(100);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+ "售出了第" + (tickets--) + "张票");

}

lock.unlock();

}

}

}

第二种:

packageRunnable接口;/** 同步

* 这里有两种方式加锁

* 分别是

* 1.synchronized

* 2.lock()和unlock()*/

public class MyRunnable implementsRunnable {private int tickets = 100;public voidrun() {while (true) {synchronized (this) {if (tickets > 0) {try{

Thread.sleep(100);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+ "售出了第" + (tickets--) + "张票");

}

}

}

}

}

packageRunnable接口;public classRunnableDemo {public static voidmain(String[] args) {

MyRunnable myRunnable= newMyRunnable();

Thread t1= new Thread(myRunnable, "窗口一");

Thread t2= new Thread(myRunnable, "窗口二");

Thread t3= new Thread(myRunnable, "窗口三");

t1.start();

t2.start();

t3.start();

}

}

运行结果:

窗口二售出了第100张票

窗口三售出了第99张票

窗口三售出了第98张票

窗口三售出了第97张票

窗口一售出了第96张票

窗口三售出了第95张票

窗口二售出了第94张票

窗口二售出了第93张票

窗口二售出了第92张票

窗口二售出了第91张票

窗口二售出了第90张票

窗口二售出了第89张票

窗口二售出了第88张票

窗口三售出了第87张票

窗口一售出了第86张票

窗口一售出了第85张票

窗口一售出了第84张票

窗口一售出了第83张票

窗口一售出了第82张票

窗口一售出了第81张票

窗口一售出了第80张票

窗口一售出了第79张票

窗口一售出了第78张票

窗口一售出了第77张票

窗口三售出了第76张票

窗口三售出了第75张票

窗口三售出了第74张票

窗口三售出了第73张票

窗口二售出了第72张票

窗口二售出了第71张票

窗口二售出了第70张票

窗口二售出了第69张票

窗口三售出了第68张票

窗口一售出了第67张票

窗口一售出了第66张票

窗口三售出了第65张票

窗口三售出了第64张票

窗口三售出了第63张票

窗口二售出了第62张票

窗口二售出了第61张票

窗口二售出了第60张票

窗口二售出了第59张票

窗口二售出了第58张票

窗口二售出了第57张票

窗口三售出了第56张票

窗口三售出了第55张票

窗口一售出了第54张票

窗口一售出了第53张票

窗口一售出了第52张票

窗口三售出了第51张票

窗口三售出了第50张票

窗口二售出了第49张票

窗口二售出了第48张票

窗口二售出了第47张票

窗口二售出了第46张票

窗口二售出了第45张票

窗口二售出了第44张票

窗口二售出了第43张票

窗口三售出了第42张票

窗口三售出了第41张票

窗口一售出了第40张票

窗口三售出了第39张票

窗口二售出了第38张票

窗口二售出了第37张票

窗口二售出了第36张票

窗口三售出了第35张票

窗口三售出了第34张票

窗口三售出了第33张票

窗口三售出了第32张票

窗口三售出了第31张票

窗口一售出了第30张票

窗口一售出了第29张票

窗口三售出了第28张票

窗口三售出了第27张票

窗口二售出了第26张票

窗口二售出了第25张票

窗口二售出了第24张票

窗口二售出了第23张票

窗口二售出了第22张票

窗口二售出了第21张票

窗口三售出了第20张票

窗口三售出了第19张票

窗口三售出了第18张票

窗口三售出了第17张票

窗口一售出了第16张票

窗口一售出了第15张票

窗口一售出了第14张票

窗口一售出了第13张票

窗口一售出了第12张票

窗口三售出了第11张票

窗口三售出了第10张票

窗口二售出了第9张票

窗口二售出了第8张票

窗口二售出了第7张票

窗口三售出了第6张票

窗口三售出了第5张票

窗口一售出了第4张票

窗口一售出了第3张票

窗口三售出了第2张票

窗口三售出了第1张票

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值