java 如何安全终止线程

leomessi1987 2012-12-25 11:31:57
我在做android的时候,遇到一个问题,描述如下:
我有一个Button,一点击这个Button,就开始倒计时,比如20,19,18....0;当我再次点击这个button的时候,如何终止前面那个线程,让倒计时从新由20,19,18...这样倒计时?
...全文
125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leomessi1987 2012-12-26
  • 打赏
  • 举报
回复
谢谢各位,问题已解决。或许是我描述的不太清楚。我的是在点击button的同时开启一个线程的,重复点击Button就会造成倒计时混乱的情况,比如20,8,19,7,18,6... 我的解决方法是:在线程的run方法里面,有个for循环来控制倒计时,在for循环里面加个if条件判断,什么时候让for的条件变量值变为0,这样就可以终止这个线程了。 方法虽然有点笨,但也解决了上面的问题。
失落夏天 2012-12-25
  • 打赏
  • 举报
回复
和楼上差不多,设置一个公共的变量,然后提供一个对该公共变量的get 和set 方法,然后对set方法加锁, 然后再添加一个重置方法,该方法功能把公共变量置为20。 点击button的时候调用以下该重置方法就可以了。 至于子线程,可以一直跑不用停。 也可以结束子线程然后重新开启一个新线程。
  • 打赏
  • 举报
回复
使用公共变量,子线程判断公共变量的改变确定是否重新开始从20倒计时
meichen8050753 2012-12-25
  • 打赏
  • 举报
回复
引用 5 楼 game4daniel 的回复:
Java code?1234567891011121314151617181920new R implements Runnable{ boolean running = true; public void run(){ while(running){ // do something } } pub……
正解
game4daniel 2012-12-25
  • 打赏
  • 举报
回复

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();
}
安特矮油 2012-12-25
  • 打赏
  • 举报
回复
最简单的就是倒计时的数字使用全局变量 int time = 20; for(time; time >= 0; time--){ System.out.println(time); } 点击按钮的时候充值time就可以了
wen2034 2012-12-25
  • 打赏
  • 举报
回复
一个线程就可以了,再次点击这个button的时候把倒数的变量改为20继续倒数就行啦

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧