军队线程 *模拟作战双方的行为

来源:互联网 发布:大智慧如何导出数据 编辑:程序博客网 时间:2024/05/16 23:50
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();
    }

}