我有一个场景,我有一个线程在等待和执行任务之间循环。但是,我想中断线程的等待(如果你愿意的话,跳过剩下的等待)并继续执行任务。
任何人都有任何想法如何做到这一点?
答案 0 :(得分:5)
我认为你需要的是实现wait()/ notify()!查看本教程:http://www.java-samples.com/showtutorial.php?tutorialid=306
那里有很多人!如果您需要更具体的案例,请发布一些代码!
欢呼答案 1 :(得分:1)
您可以使用wait()
和notify()
。如果你的线程在等待,你需要通过从另一个线程调用notify()
来恢复它。
答案 2 :(得分:0)
这就是Thread.interrupt的用途:
import java.util.Date;
public class Test {
public static void main(String [] args) {
Thread t1 = new Thread(){
public void run(){
System.out.println(new Date());
try {
Thread.sleep(10000); // sleep for 10 seconds.
} catch (InterruptedException e) {
System.out.println("Sleep interrupted");
}
System.out.println(new Date());
}
};
t1.start();
try {
Thread.sleep(2000); // sleep for 2 seconds.
} catch (InterruptedException e) {
e.printStackTrace();
}
t1.interrupt();
}
}
线程t1只会休眠2秒,因为主线程会中断它。请记住,这会中断许多阻塞操作,例如IO。