Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / isInterrupted() / 14 сообщений из 14, страница 1 из 1
21.08.2013, 10:58:03
    #38372876
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
После метода interrupt() можно же проверить объект потока методом isInterrupted() на true?
Вроде так и проверяю... а что не так? т.к. System.out.println(seconds); не выводит то что нужно.

Код: 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.
32.
33.
34.
public class Watch {
    public static void main(String[] args) throws IOException {
        InputStreamReader in = new InputStreamReader(System.in);
        BufferedReader reader = new BufferedReader(in);
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.start();
        reader.readLine();
        stopwatch.interrupt();
        reader.close();
        in.close();
    }

    public static class Stopwatch extends Thread {
        private int seconds;

        public void run() {
            try {
            	
            	Thread t = Thread.currentThread();
            	Date start = new Date();
            	
            	while(!t.isInterrupted()) {
            		t.sleep(10);
            	}
            	
            	Date end = new Date();
    		seconds = end.getSeconds() - start.getSeconds();
            	
            } catch (InterruptedException e) {
                System.out.println(seconds);
            }
        }
    }
}
...
Рейтинг: 0 / 0
21.08.2013, 11:35:13
    #38372973
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
А что он по Вашему мнению должен вывести?
...
Рейтинг: 0 / 0
21.08.2013, 12:00:27
    #38373018
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
Watch.java
Код: 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.
32.
package watch;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Watch extends Thread {

    public static void main(String[] args) throws IOException {
//        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Watch watch = new Watch();
        watch.start();
        reader.readLine();
        watch.interrupt();
        // не надо тут ридер закрывать
    }

    @Override
    public void run() {
        long start = System.currentTimeMillis();
        try {
            while (true) {
//                Thread.sleep(10000000); //
                Thread.sleep(10);
            }
        } catch (InterruptedException e) {
            long end = System.currentTimeMillis();
            System.out.println((end - start) / 1000.0);
        }
    }
}

...
Рейтинг: 0 / 0
21.08.2013, 12:42:47
    #38373108
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
avp.mk
Watch.java
Код: 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.
32.
package watch;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Watch extends Thread {

    public static void main(String[] args) throws IOException {
//        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Watch watch = new Watch();
        watch.start();
        reader.readLine();
        watch.interrupt();
        // не надо тут ридер закрывать
    }

    @Override
    public void run() {
        long start = System.currentTimeMillis();
        try {
            while (true) {
//                Thread.sleep(10000000); //
                Thread.sleep(10);
            }
        } catch (InterruptedException e) {
            long end = System.currentTimeMillis();
            System.out.println((end - start) / 1000.0);
        }
    }
}



понятно, но мне нужно менять логику только в блоке try
...
Рейтинг: 0 / 0
21.08.2013, 12:49:09
    #38373125
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
rema174понятно, но мне нужно менять логику только в блоке tryКогда возбуждается исключение (в методе sleep) управление передается в блок catch. Строчки
Код: java
1.
2.
Date end = new Date();
seconds = end.getSeconds() - start.getSeconds();

не выполняются.
...
Рейтинг: 0 / 0
21.08.2013, 12:52:54
    #38373130
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
avp.mk,
да, получается без изменения catch не обойтись
...
Рейтинг: 0 / 0
21.08.2013, 12:58:04
    #38373145
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
avp.mkКогда возбуждается исключение
Это из С++ терминология? В Java исключения, обычно, выбрасываются.
...
Рейтинг: 0 / 0
21.08.2013, 13:11:33
    #38373183
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
Blazkowicz,
в русском переводе Эккеля исключения тоже возбуждаются, и ничё.
...
Рейтинг: 0 / 0
21.08.2013, 13:59:52
    #38373267
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
rema174Blazkowicz,
в русском переводе Эккеля исключения тоже возбуждаются, и ничё.
ну если throw это "возбуждается", то пожалуйста. но скорее всего возбужден был мозг мега-переводчика.
...
Рейтинг: 0 / 0
21.08.2013, 14:02:50
    #38373274
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
chpasha,
"возбужденный" переводчикПовторное возбуждение исключения

В некоторых ситуациях требуется заново возбудить уже перехваченное исключение; чаще всего это происходит при использовании Exception для перехвата всех исключений. Так как ссылка на текущее исключение уже имеется, вы попросту возбуждаете исключение по этой ссылке:
Код: java
1.
 catch(Exception е) {System.out.println("повторно возбуждено исключение"); throw e;}


При повторном возбуждении исключение передается в распоряжение обработчика более высокого уровня. Все остальные предложения catch текущего блока try игнорируются. Вся информация из объекта, представляющего исключение, сохраняется, и обработчик более высокого уровня, перехватывающий подобные исключения, сможет ее извлечь.
...
Рейтинг: 0 / 0
21.08.2013, 14:27:45
    #38373328
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
rema174,

Хотя raise и в англоязычных текстах встречается. У Эккеля в оригинале используется throw, за исключением, может быть одного-двух предложений. В некоторых средах, кстати, между throw и raise имеется принципиальная разница.
Ну, и приведенный перевод доставляет, конечно.
"Повторное возбуждение исключения" - странно что не "перевозбуждение" :)
"попросту возбуждаете исключение по этой ссылке" - simply rethrow that reference. Совсем одно и тоже.
"передается в распоряжение обработчика более высокого уровня"... мля, какие ещё, нафиг уровни обработчиков?
Опять же - "перехват" - соответствует вполне техническому термину intercept. Почему catch вдруг тоже стал "перехватом"? Только потому что в русском не нашлось внятного существительного для глагола "ловить"?
...
Рейтинг: 0 / 0
21.08.2013, 15:03:24
    #38373396
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
Blazkowicz, Вы не филологический софт случаенно пишете?)

Помогите лучше из джавы попасть в автокад. http://www.sql.ru/forum/1041944
...
Рейтинг: 0 / 0
21.08.2013, 15:09:34
    #38373414
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
avp.mkBlazkowicz, Вы не филологический софт случаенно пишете?)
Нет. Просто "возбуждение исключения" сильно режет слух. Фраза raise exception, на сколько я понимаю исторически, возникла из raise flag. Флаги, обычно, устанавливают. А не возбуждают. Вот и интересно чем руководстуются те что пишет про "возбуждения исключений". Не исключаю, что существуют какие-то основания и для такого перевода. Но я с ними не знаком.

avp.mkПомогите лучше из джавы попасть в автокад. http://www.sql.ru/forum/1041944
Это же C#.
...
Рейтинг: 0 / 0
21.08.2013, 15:52:27
    #38373516
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isInterrupted()
BlazkowiczНет. Просто "возбуждение исключения" сильно режет слух. Фраза raise exception, на сколько я понимаю исторически, возникла из raise flag. Флаги, обычно, устанавливают. А не возбуждают. Вот и интересно чем руководстуются те что пишет про "возбуждения исключений". Не исключаю, что существуют какие-то основания и для такого перевода. Но я с ними не знаком.Смотрел года 4 назад курс, там тоже все исключения "возбуждались".. От слова "возбуждение" не испытываю никаких неудобств, поэтому бывает использую в данном контексте и его.
С тайными знаниями почему так говорить "правильно" - не знаком))

BlazkowiczЭто же C#.Я в курсе))
Перепробовав 20 библиотек a la Java-COM-Bridge (включая вчерашний апдейт JNA) остановился на варианте написать обёртку на C#.. (и использовать её через jni4net).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / isInterrupted() / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]