多线程synchronized、wait与notify
来源:互联网 发布:ecshop仿淘宝订单页面 编辑:程序博客网 时间:2024/04/29 22:11
例一:烧水和洗盘子
public class A {public static void main(String[] args) throws InterruptedException {Object object = 2;//烧到2水睡眠HeatWater heatWater=new HeatWater(object);Thread thread=new Thread(heatWater);DishWashing dishWashing=new DishWashing(object);Thread thread2=new Thread(dishWashing);thread.start();Thread.sleep(1000);//确保先进行thread线程thread2.start();}}
public class HeatWater implements Runnable{Object object;public HeatWater(Object object) {this.object = object;}@Overridepublic void run() {synchronized (object) {for (int i = 1; i < 5; i++) {System.out.println("烧"+i+"水");try {Thread.sleep(1500);if(i==Integer.parseInt(object.toString())){object.wait();}} catch (InterruptedException e) {e.printStackTrace();}}}}}
public class DishWashing implements Runnable{Object object;public DishWashing(Object object) {this.object = object;}@Overridepublic void run() {synchronized (object) {for (int i = 1; i < 5; i++) {System.out.println("开始洗"+i+"盘子");try {Thread.sleep(1500);} catch (InterruptedException e) {e.printStackTrace();}}object.notify();}}}
输出结果:
烧1水
烧2水
开始洗1盘子
开始洗2盘子
开始洗3盘子
开始洗4盘子
烧3水
烧4水
烧1水
烧2水
开始洗1盘子
开始洗2盘子
开始洗3盘子
开始洗4盘子
烧3水
烧4水
例二:抢票
public class A {public static void main(String[] args) {BuyTicket buyTicket = new BuyTicket();Thread t = new Thread(buyTicket, "红红");Thread t1 = new Thread(buyTicket, "翠花");t.start();t1.start();}}
public class BuyTicket implements Runnable {// 票数int a = 100;public void run() {// 循环取票for (int i = 0; i <= 100; i++) {// 同步锁synchronized (this) {// 判断票数if (a > 0) {// 每取一次票的时候让票数-1a--;System.out.println(Thread.currentThread().getName() + "开始买票..");System.out.println(Thread.currentThread().getName() + "买票结束剩余.." + a + "张票");try { Thread.sleep(200);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}}输出结果:
红红开始买票..
红红买票结束剩余..99张票
红红开始买票..
红红买票结束剩余..98张票
翠花开始买票..
翠花买票结束剩余..97张票
红红开始买票..
红红买票结束剩余..96张票
翠花开始买票..
翠花买票结束剩余..95张票
。。。。。
阅读全文
0 0
- 多线程synchronized、wait与notify
- synchronized,wait 与 notify
- java多线程之synchronized与lock、wait与notify
- java多线程设计wait/notify机制 (synchronized与对象锁)
- java多线程设计wait/notify机制 (synchronized与对象锁)
- Android synchronized wait notify 多线程同步
- Android synchronized wait notify 多线程同步 .
- Android synchronized wait notify 多线程同步 分享
- Java多线程之synchronized,wait(),notify(),notifyAll()
- Java多线程(二)synchronized wait notify
- 多线程 同步synchronized、通信wait、notify
- 多线程—wait,notify(针对方法synchronized)
- java多线程synchronized,notify,wait应用实例
- 多线程中的wait与notify
- synchronized 中 notify 与wait() 的用法
- Java Synchronized与wait notify 连用
- Java多线程--同步与死锁:synchronized;等待与唤醒:wait、notify、notifyAll;生命周期
- java多线程设计wait/notify机制 (synchronized与对象锁) ---- 转
- Matlab处理读取ASCII文本数据找到规则需求,重新写入数据到新的文本文件[示例:有限元边界条件施加]
- MVVMLight+WPF
- mysql数据库ibdata1文件瘦身
- 第三十一天 用js写一个可以拖动的div
- Oracle 误删除软件目录
- 多线程synchronized、wait与notify
- Android USB通信
- 【插件开发一】开发简单OpenFire插件
- 剑指Offer-31
- PHP笔记13:正则表达式
- XMPP协议学习笔记四(Openfire服务器启动过程)
- 大洋调查出海工作总结(EM122&SeaSPY2)
- mybatis
- 统计学习方法笔记二-----感知机算法(PLA)代码实现