问答详情
源自:2-4 Java线程-隋唐演义实战开发---军队

线程的停止

关于军队这一块没有设置他的具体结束时间,怎么能确定这两个线程会结束呢?什么时候结束呢,KeepRunning这个值什么时候会被调用呢,DeBug不出来啊,求解

提问者:Z_Ser 2016-05-05 22:14

个回答

  • 萌萌哒猫头鹰
    2016-05-10 20:00:23
    已采纳

    在舞台这个线程里面将两个军队线程对象的KeepRunning属性设置为false,从而结束了两个军队线程。

    ArmyRunnable armyA = new ArmyRunnable();
    		ArmyRunnable armyB = new ArmyRunnable();
    		Thread threadArmyA=new Thread(armyA,"armyA");
    		Thread threadArmyB=new Thread(armyB,"armyB");
    		threadArmyA.start();
    		threadArmyB.start();
    	    try {
    			Thread.sleep(50);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	    armyA.keepRunning=false; //结束了军队A的线程
    	    armyB.keepRunning=false; //结束了军队B的线程

    在军队线程里面,keepRunning需用volatile修饰,表示它可以被不同线程访问和修改。

    即:

    volatile boolean keepRunning=true;


  • 什么什么青年欢乐多
    2016-05-06 10:50:21

    KeepRunning初始值为true,循环停止的条件不是if(count==100)KeepRunning=false;吗?