Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
1

В каком случае interrupt действительно работает

05.02.2014, 14:09. Показов 1468. Ответов 2
Метки нет (Все метки)

В каком случае interrupt действительно работает?
(да-да, я в курсе о рекомендациях насчёт остановки потоков через собственные методы и т.д и т.п, меня интересует то что нам предлагает oracle в их классе Thread).
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Main {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new SThread();
        thread.start();
        System.out.printf("Thread state = %s\n", thread.getState());
        Thread.sleep(5000);
        thread.interrupt();
 
        System.out.printf("Thread state = %s\n", thread.getState());
        Thread.sleep(2000);
 
        //всё ещё живой, в состоянии TIMED_WAITING, но продолжает выполняться
        if(thread.isAlive()){
            System.out.printf("DIE ****ing thread!");
            thread.stop();
        }
    }
}
 
class  SThread extends Thread{
    @Override
    public void run() {
        int i = 0;
        while(!isInterrupted()){
            System.out.printf("%d\n",++i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {}
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2014, 14:09
Ответы с готовыми решениями:

В каком случае необходимо применять StringBuilder, а в каком String?
Знаю, что уже есть подобные темы, но ответа в них не нашел. Да, String используется чаще, поэтому...

ISNUMBER работает в случае True, возвращает #ЗНАЧ! в случае False
У меня есть колонка со строками, в функции я проверяю, есть ли определенная подстрока в той или...

В каком случае оформляются доокументы
В каком случае оформляются доокументы: Платежное поручение входящее и Платежное поручение исходящее?

В каком случае нужен свой DNS?
Прошу прощения, не совсем чайник, но многое не понимаю. Планируется интернет магазин на VDS и...

2
Эксперт Java
4077 / 3811 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
05.02.2014, 15:54 2
Так вы же ловите InterruptedException - это сбрасывает состояние потока, и isInterrupted() после этого возвращает false.
обычно пишут как-то так:
Java
1
2
3
4
5
try {
  //...
} catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
2
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
06.02.2014, 02:00  [ТС] 3
turbanoff, аааа, блин, я как-то на автомате прописал его для Thread.sleep пока за состояниями потока наблюдал и экспериментировал с ними. Теперь понятно, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 02:00

В каком случае не параллельные прямые не пересекаются?
В каком случае не параллельные прямые не пересекаются?

В каком случае нужно использовать OWIN?
В каком случае нужно (не нужно) использовать OWIN?

В каком случае используется метод-выражение?
В каком случае используется метод-выражение c#?

В каком случае проверка условия выполняется быстрее?
В каком случае проверка условия выполняется быстрее? while(1); или while(true); Ведь в одном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.