等待线程跳过剩余的等待/继续

时间:2012-02-01 16:06:16

标签: java multithreading wait interrupt

我有一个场景,我有一个线程在等待和执行任务之间循环。但是,我想中断线程的等待(如果你愿意的话,跳过剩下的等待)并继续执行任务。

任何人都有任何想法如何做到这一点?

3 个答案:

答案 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。