Java线程启动后定时关闭如何实现

kolnick 2013-09-04 02:19:43
Java线程启动后定时摧毁如何实现

...全文
795 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kolnick 2013-09-05
  • 打赏
  • 举报
回复
3,4,7楼正解 ! 推荐 使用7楼方法,
huntor 2013-09-04
  • 打赏
  • 举报
回复
import static java.util.concurrent.TimeUnit.*;
 class BeeperControl {
   private final ScheduledExecutorService scheduler =
     Executors.newScheduledThreadPool(1);

   public void beepForAnHour() {
     final Runnable beeper = new Runnable() {
       public void run() { System.out.println("beep"); }
     };
     final ScheduledFuture<?> beeperHandle =
       scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
     scheduler.schedule(new Runnable() {
       public void run() { beeperHandle.cancel(true); }
     }, 60 * 60, SECONDS);
   }
 }
末日哥 2013-09-04
  • 打赏
  • 举报
回复
boolean b = true; while(b){...} 要结束线程的时候把b置为false不就停了?
无聊找乐 2013-09-04
  • 打赏
  • 举报
回复
想自我销毁可以这样写 比如3秒销毁


    public void run() {
        long st = System.currentTimeMillis();
        while (!this.interrupted()) {
            System.out.println("running...");

            long et = System.currentTimeMillis();
            if ((et - st) > 3000) {
                break;
            }
        }
    }

无聊找乐 2013-09-04
  • 打赏
  • 举报
回复
run方法这样写

    public void run() {
        while(!this.interrupted()){
            System.out.println("running...");
        }
    }
想结束这个线程就调用这个线程的interrupt方法就好了。
ljblxx 2013-09-04
  • 打赏
  • 举报
回复
试试这个 interrupt() //中断线程。
kolnick 2013-09-04
  • 打赏
  • 举报
回复
条件这些我都明白,具体代码如何实现的呢,特别是线程摧毁这里
失落夏天 2013-09-04
  • 打赏
  • 举报
回复
首先肯定得设置一个守护线程专门计时用,该线程的功能就是到时间修改标记位 其他的线程都引入标记位,当标记位为false时跳出循环,线程结束。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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