Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区<另外的写法>
来源:互联网 发布:淘宝如何设置店铺首页 编辑:程序博客网 时间:2024/04/30 07:05
http://blog.csdn.net/stellaah/article/details/6864701
我也粘贴一下另外一种写法..嘿嘿~~ 大家多交流多学习
图好玩,写来跑跑,Java基础,挺重要的,代码还是要多写啊
package TraditionalThread;public class ZhiHuiGuan{ public static void main(String args[]) { new ZhiHuiGuan().call(); } /** * 轰炸命令启动 */ private void call() { final Army army = new Army(); new Thread(new Runnable() { @Override public void run() { for (int i = 1; i <= 60; i++) { army.A(i); } } }).start(); for (int i = 1; i <= 60; i++) { army.B(i); } }}class Army{ /** * A连轰炸/B连熄火 */ private boolean isAFire = true; /** * A连轰炸任务 */ public synchronized void A(int taskCount) { if (!isAFire) { //ShowTime For B连. A连休息 try{this.wait();} catch (InterruptedException e){} } for (int i = 1; i <= 12; i++) { try{Thread.sleep(50);}catch (Exception e){} System.out.println("A连正在进行第"+taskCount+"次任务,正在发射第"+(i)+"枚导弹"); } //A连轰炸完毕,通知B连的兄弟开火 isAFire = false; this.notify(); } /** * B连轰炸任务 */ public synchronized void B(int taskCount) { if (isAFire) { //ShowTime For A连. B连休息 try{this.wait();} catch (InterruptedException e){} } for (int j = 1; j <= 30; j++) { try{Thread.sleep(50);}catch (Exception e){} System.out.println("B连正在进行第"+taskCount+"次任务,正在发射第"+(j)+"枚导弹"); } //B连轰炸完毕,通知A连的兄弟开火 isAFire = true; this.notify(); }}
其实如果用上并发库里的Lock更爽更简洁...一起进步
package TraditionalThread;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ZhiHuiGuanHigh{ public static void main(String args[]) { new ZhiHuiGuanHigh().call(); } /** * 轰炸命令启动 */ private void call() { final Army army = new Army(); new Thread(new Runnable() { @Override public void run() { for (int i = 1; i <= 60; i++) { army.A(i); } } }).start(); for (int i = 1; i <= 60; i++) { army.B(i); } }}class ArmyHigh{ Lock lock = new ReentrantLock(); /** * A连轰炸/B连熄火 */ private boolean isAFire = true; /** * A连轰炸任务 */ public void A(int taskCount) { if (!isAFire) { //ShowTime For B连. A连休息 lock.lock(); } for (int i = 1; i <= 12; i++) { try{Thread.sleep(50);}catch (Exception e){} System.out.println("A连正在进行第"+taskCount+"次任务,正在发射第"+(i)+"枚导弹"); } //A连轰炸完毕,通知B连的兄弟开火 isAFire = false; lock.unlock(); } /** * B连轰炸任务 */ public synchronized void B(int taskCount) { if (isAFire) { //ShowTime For A连. B连休息 lock.lock(); } for (int j = 1; j <= 30; j++) { try{Thread.sleep(50);}catch (Exception e){} System.out.println("B连正在进行第"+taskCount+"次任务,正在发射第"+(j)+"枚导弹"); } //B连轰炸完毕,通知A连的兄弟开火 isAFire = true; lock.unlock(); }}
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区<另外的写法>
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区
- Java【多线程知识总结(8)】线程通信,wait()与notify()的运用
- Java【多线程知识总结(8)】线程通信,wait()与notify()的运用
- 【郭林专刊】多线程知识总结线程通信,wait()与notify()的运用
- 线程通信,wait()与notify()的运用
- 多线程并发之线程间的通信,notify,wait
- 多线程编程入门(2):线程的通信(wait,notify)
- 【Java多线程与并发库】04 传统的线程同步通信技术-synchronized/wait/notify/notifyAll
- Java 多线程之线程间的通信——wait及notify方法
- Java 多线程之线程间的通信——wait及notify方法
- JAVA多线程通信之wait和notify的使用
- java的线程通信wait(),notify(),notifyAll()
- java多线程学习之线程通信-wait()等待 notify()唤醒
- Java多线程之线程间协作 notify与wait的使用
- Java多线程通信-利用传统的线程通信wait(),notify()方法实现“生产者消费者模式”
- java多线程之wait,notify的使用
- java线程的wait方法和notify方法的运用
- 如何快速提高写代码的水平?
- 位平面介绍
- SGU111 Very simple problem(大数开方)
- 深入HTML5: HTML5 本地存储( Local Storage )的前世今生
- 系统性能监控--linux top命令详解
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区<另外的写法>
- HDU OJ 题目分类
- c#操作Access[下]
- some+script
- flex FaultEvent捕获java异常
- HTTP消息
- java基础知识回顾
- Java Web应用程序的规范目录结构
- DataView