run方法这样写 public void run() { while(!this.interrupted()){ System.out.println("running..."); } } 想结束这个线程就调用这个线程的interrupt方法就好了。
想自我销毁可以这样写 比如3秒销毁 public void run() { long st = System.currentTimeMillis(); while (!this.interrupted()) { System.out.println("running..."); long et = System.currentTimeMillis(); if ((et - st) > 3000) { break; } } }
boolean b = true; while(b){...} 要结束线程的时候把b置为false不就停了?
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); } }
其他的线程都引入标记位,当标记位为false时跳出循环,线程结束。
run方法这样写
public void run() {
while(!this.interrupted()){
System.out.println("running...");
}
}
想结束这个线程就调用这个线程的interrupt方法就好了。
long st = System.currentTimeMillis();
while (!this.interrupted()) {
System.out.println("running..."); long et = System.currentTimeMillis();
if ((et - st) > 3000) {
break;
}
}
}
while(b){...}
要结束线程的时候把b置为false不就停了?
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);
}
}