Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Корректное закрытие потоков.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
JDS,
Ты долго будешь говорить или сделаешь то что тебя просят?
25 июл 19, 13:38    [21934337]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
Упрямому ТС
....
Есть такой бородатый анекдот: Стоит новый русский около своего мерса, грустно так. Останавливается еще один: че, типа, стоишь? Да вот, сломалась — не едет. А стекла протирал? Протирал. А колеса пинал? Пинал. Ну тогда, братан, не знаю. Так вот, насчет "пинал". Дело было зимой. Было достаточно холодно. Бухгалтер нашей фирмы предложил подвезти меня до метро. Надо заметить, что бухгалтер он был классный, а вот в машинах разбирался весьма и весьма слабо. Завелись, прогрелись. Пытается тронуться — машины не едет. Не буксует, а именно не едет — колеса не крутятся. Минут через двадцать стараний из офиса нами обессилившими и замерзшими был вызван в помощь другой наш сотрудник Алексей, который с машиной, что называется "на ты". Что, говорит, машину сегодня мыл? Ну, мыл. Далее Алексей со всей силы бьет ногой по колесам. И, о чудо, машина трогается. Колеса-то после мойки примерзли. Так что в каждой шутке есть доля шутки. anekdotov.net
25 июл 19, 13:40    [21934338]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp
JDS,
Ты долго будешь говорить или сделаешь то что тебя просят?

Пока, все что вижу, это: попробуй сделать с флагом, тк у тебя нет выхода из цикла.
Еще упоминание про доку, но что именно не ясно.
25 июл 19, 13:49    [21934350]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
JDS,
Ну Иван, Иваныч!
21934185
25 июл 19, 13:54    [21934356]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
JDS
доку
естественно на событие.
25 июл 19, 13:56    [21934360]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
JDS
Member

Откуда:
Сообщений: 651
PetroNotC Sharp
JDS
доку
естественно на событие.

Ок, вечером поищу.
25 июл 19, 14:03    [21934369]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
JDS
PetroNotC Sharp
пропущено...
естественно на событие.

Ок, вечером поищу.
ok.
Логирование без потока.
Логи сюда.
Доки сюда.
И потом частями вставляем твой поток.
25 июл 19, 14:30    [21934396]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
qasta
Member

Откуда:
Сообщений: 71
JDS
qasta, вот хотел же написать пример с флагом, тк понимал, что возможно народ пойдет в эту сторону, но понадеялся, что обьясню, а зря :)
Я же говорю, что и с флагом поведение ровно такое же, вопрос не в этом.

В чем у вас вопрос? На "Но хотелось бы понять, в чем фишка?" вам уже ответили - у вас в первом коде из цикла выхода нет.
На "как реализовать правильнее?" - вроде тоже ответили (через флаги с volatile & synchronized в простом варианте, через классы из java.util.concurrent - в сложном)...
25 июл 19, 14:40    [21934409]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
JDS
Member

Откуда:
Сообщений: 651
Все оказались правы как обычно.
Не стал разбираться почему второй вариант работает, так как выглядит криво.
А первый вариант действительно не работал так как если делать interrupt, когда поток спит, он падает на исключении "sleep interrupted" и из цикла не выходит, то есть помимо обработки исключения, туда надо втыкать break например.
При этом даже с флагом ситуация не сильно спасает, если нет выхода из цикла в catch sleep-а, а мы выставляем флаг и тут же делаем interrupt. Вот если сначала выставить флаг, потом подождать больше чем слип внутри, то можно делать интеррапт, но смысла уже нет, т.к. из цикла итак вышли нормальным образом. Про синхронайзд, как понимаю, актуально, если переменную могут менять несколько потоков одновременно, но на вс случай можно воткнуть )
25 июл 19, 21:43    [21934843]     Ответить | Цитировать Сообщить модератору
 Re: Корректное закрытие потоков.  [new]
qasta
Member

Откуда:
Сообщений: 71
JDS
Про синхронайзд, как понимаю, актуально, если переменную могут менять несколько потоков одновременно, но на вс случай можно воткнуть )

Не только "меняют", но и "читают". То есть даже если переменную меняет только один поток, а читает другой - нужен synchronized или volatile. Иначе то будет работать, то не будет (самый неприятный вид ошибок).
26 июл 19, 12:53    [21935273]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Java Ответить