Заставить поток ожидания пропустить оставшуюся часть ожидания / продолжить - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть сценарий, где у меня есть один поток, который проходит между ожиданием и выполнением задачи.Однако я хотел бы прервать ожидание потока (пропустите оставшееся время ожидания, если хотите) и продолжить выполнение задачи.

У кого-нибудь есть идеи, как это можно сделать?

Ответы [ 3 ]

5 голосов
/ 01 февраля 2012

Я думаю, вам нужно реализовать wait () / notify ()!посмотрите этот урок: http://www.java -samples.com / showtutorial.php? tutorialid = 306

Их много!если вам нужен более конкретный случай, опубликуйте немного своего кода!

ура

1 голос
/ 01 февраля 2012

Вы можете использовать wait() и notify().Если ваш поток ожидает, вам нужно возобновить его, вызвав notify() из другого потока.

0 голосов
/ 01 февраля 2012

Вот для чего предназначен 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.

...