日期:2014-05-20  浏览次数:20779 次

java 如何安全终止线程
我在做android的时候,遇到一个问题,描述如下:
     我有一个Button,一点击这个Button,就开始倒计时,比如20,19,18....0;当我再次点击这个button的时候,如何终止前面那个线程,让倒计时从新由20,19,18...这样倒计时?

------解决方案--------------------
使用公共变量,子线程判断公共变量的改变确定是否重新开始从20倒计时
------解决方案--------------------
和楼上差不多,设置一个公共的变量,然后提供一个对该公共变量的get 和set 方法,然后对set方法加锁,
然后再添加一个重置方法,该方法功能把公共变量置为20。
点击button的时候调用以下该重置方法就可以了。
至于子线程,可以一直跑不用停。
也可以结束子线程然后重新开启一个新线程。
------解决方案--------------------
一个线程就可以了,再次点击这个button的时候把倒数的变量改为20继续倒数就行啦
------解决方案--------------------
最简单的就是倒计时的数字使用全局变量
int time = 20;
for(time; time >= 0; time--){
    System.out.println(time);
}
点击按钮的时候充值time就可以了
------解决方案--------------------

new R implements Runnable{
    boolean running = true;
    public void run(){
        while(running){
            // do something
        }
    }
    publid void stop(){
        this.runnint = false;
    }
}
// ButtonView部分
R r  = null;
onclick....(){
    if(r != null){
        r.stop();
    }
    r = new R();
    new Thread(r).start();
}