军队线程 *模拟作战双方的行为
2017-09-26 10:55
369 查看
package com.concurrent;
/*
*
*军队线程
*模拟作战双方的行为
*/
public class ArrayRunnable implements Runnable {
//保证了线程可以正确的读取其他线程写入的值
volatile boolean keepRunning=true;
@Override
public void run() {
while(keepRunning) {
//发动5连击
for(int i=0;i<5;i++) {
System.out.println(Thread.currentThread().getName()+"进攻对方【"+i+"】");
//让出处理器时间,
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"结束战斗");
}
}
package com.concurrent;
public class KeyPersionThread extends Thread {
public void run() {
System.out.println(Thread.currentThread().getName()+"开始了战斗");
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"左突右杀,攻击随军");
}
System.out.println(Thread.currentThread().getName()+"结束了战斗");
}
}
package com.concurrent;
/*
* 这是
*/
public class stage extends Thread {
public void run() {
//实例化对象
ArrayRunnable arrayTaskOfSuiDynasty=new ArrayRunnable();
ArrayRunnable arrayTaskOfRevolt=new ArrayRunnable();
//使用Runnable接口创建线程对象
Thread arrayOfSuiDynasty=new Thread(arrayTaskOfSuiDynasty,"随军");
Thread arrayOfRevolt=new Thread(arrayTaskOfRevolt,"农民起义军");
//启动线程 军队开始作战
arrayOfSuiDynasty.start();
arrayOfRevolt.start();
// 舞台线程休眠
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
arrayTaskOfSuiDynasty.keepRunning=false;
arrayTaskOfRevolt.keepRunning=false;
//使其他线程等待当前线程终止join
try {
arrayOfRevolt.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("正当双方激战正酣,半路杀出个程咬金");
Thread mrcheng=new KeyPersionThread();
mrcheng.setName("程咬金");
System.out.println("程咬金的理想就是结束战争,让百姓安居乐业!");
//军队停止作战
arrayTaskOfRevolt.keepRunning=false;
arrayTaskOfSuiDynasty.keepRunning=false;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
/*
*
* 历史大戏留给关键人物
*/
mrcheng.start();
//等待程咬金 完成历史使命
try {
mrcheng.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("战争结束,人民安居乐业,程先生积极实现了人生,为人民做出了贡献!");
}
public static void main(String[] args) {
new stage().start();
}
}
/*
*
*军队线程
*模拟作战双方的行为
*/
public class ArrayRunnable implements Runnable {
//保证了线程可以正确的读取其他线程写入的值
volatile boolean keepRunning=true;
@Override
public void run() {
while(keepRunning) {
//发动5连击
for(int i=0;i<5;i++) {
System.out.println(Thread.currentThread().getName()+"进攻对方【"+i+"】");
//让出处理器时间,
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"结束战斗");
}
}
package com.concurrent;
public class KeyPersionThread extends Thread {
public void run() {
System.out.println(Thread.currentThread().getName()+"开始了战斗");
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"左突右杀,攻击随军");
}
System.out.println(Thread.currentThread().getName()+"结束了战斗");
}
}
package com.concurrent;
/*
* 这是
*/
public class stage extends Thread {
public void run() {
//实例化对象
ArrayRunnable arrayTaskOfSuiDynasty=new ArrayRunnable();
ArrayRunnable arrayTaskOfRevolt=new ArrayRunnable();
//使用Runnable接口创建线程对象
Thread arrayOfSuiDynasty=new Thread(arrayTaskOfSuiDynasty,"随军");
Thread arrayOfRevolt=new Thread(arrayTaskOfRevolt,"农民起义军");
//启动线程 军队开始作战
arrayOfSuiDynasty.start();
arrayOfRevolt.start();
// 舞台线程休眠
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
arrayTaskOfSuiDynasty.keepRunning=false;
arrayTaskOfRevolt.keepRunning=false;
//使其他线程等待当前线程终止join
try {
arrayOfRevolt.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("正当双方激战正酣,半路杀出个程咬金");
Thread mrcheng=new KeyPersionThread();
mrcheng.setName("程咬金");
System.out.println("程咬金的理想就是结束战争,让百姓安居乐业!");
//军队停止作战
arrayTaskOfRevolt.keepRunning=false;
arrayTaskOfSuiDynasty.keepRunning=false;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
/*
*
* 历史大戏留给关键人物
*/
mrcheng.start();
//等待程咬金 完成历史使命
try {
mrcheng.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("战争结束,人民安居乐业,程先生积极实现了人生,为人民做出了贡献!");
}
public static void main(String[] args) {
new stage().start();
}
}
相关文章推荐
- splinter python浏览器自动化操作,模拟浏览器的行为
- 极验验证码行为模拟(成功率90%以上)
- 【考试分析】模拟考试阶段行为规范
- 模拟网页行为之实践篇二
- 转作战双方(下)
- 使用python对网站进行测试(模拟用户行为)
- 模拟用户行为,post数据到网页
- LoadRunner 用户行为模拟(一)
- jquery学习随笔(模拟行为、事件委托)
- powershell 模拟IE行为
- php模拟post行为代码总结(POST方式不是绝对安全)
- Lua模拟继承行为
- php模拟post行为代码总结(POST方式不是绝对安全)
- 群体智能算法-黏菌寻找食物最优路线行为模拟
- 模拟网页行为之工具篇
- 模拟用户行为高匿爬虫的设计开发
- 揭秘红旗军演:真正现实环境下的模拟作战[组图
- 用HOOK机制让自绘菜单栏控件模拟系统菜单栏行为
- 如何模拟鼠标的拖拽行为.
- Spark项目之电商用户行为分析大数据平台之(十二)Spark上下文构建及模拟数据生成