|
|
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
нашёл такой вопрос/ответ: http://www.javacodegeeks.com/2014/11/multithreading-concurrency-interview-questions-answers.html How do we stop a thread in Java? To stop a thread one can use a volatile reference pointing to the current thread that can be set to null by other threads to indicate the current thread should stop its execution: и ответ: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Не понимаю как ссылка, установленная в null может остановить поток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 09:28 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questionerНе понимаю как ссылка, установленная в null может остановить поток ссылка null/not null просто используется как флаг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 09:43 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questionerНе понимаю как ссылка, установленная в null может остановить поток А мне не понятно, чем плох interrupt(), что аж пришлось городить неведомую фигню? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:15 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
wadmanА мне не понятно, чем плох interrupt(), что аж пришлось городить неведомую фигню? Ну, например, тем что он работает только на заблокированных потоках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:20 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questionerНе понимаю как ссылка, установленная в null может остановить поток Никак. Дебильное описание. Обычный volatile флаг, и не важно ссылка ли там на поток или что ещё. Останавливать поток не безопасно, поэтому соответствующие методы depreacted. Безопасно - попросить поток остановиться и тогда поток остановится когда ему это будет удобно безопасно высвобождая все ресурсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:23 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczwadmanА мне не понятно, чем плох interrupt(), что аж пришлось городить неведомую фигню? Ну, например, тем что он работает только на заблокированных потоках. Наверное, для меня стоит развернуть эту мысль. А то применяю везде (в т.ч. и на андроиде) и проблем не испытывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:23 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
wadmanНаверное, для меня стоит развернуть эту мысль. А то применяю везде (в т.ч. и на андроиде) и проблем не испытывал. Если нет проверять isInterrupted либо других флагов, если нет IO и блокировок синхронизации, то выкидывать InterruptedException некому. Поток может колбасить задачу до умопомрачения. Возможно имелось ввиду использование isInterrupted() вместо дополнительного флага и я не так понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:31 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЕсли нет проверять isInterrupted Дак это само собой. :) У ТС по сути создан дубликат стандартных методов. Не понятной, на кой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 10:37 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
wadmanBlazkowiczЕсли нет проверять isInterrupted Дак это само собой. :) У ТС по сути создан дубликат стандартных методов. Не понятной, на кой. Есть такие изобретатели. Главное, чтобы их код не пролез в продакшн. А статейки пусть пишут :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 12:01 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
А напишите пожалуйста, развернуто, как надо останавливать поток с примером кода, чтобы не было недопониманий у меня и всех остальных читающих топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 14:47 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
ИзопропилquestionerНе понимаю как ссылка, установленная в null может остановить поток ссылка null/not null просто используется как флаг какой толк слипать тред если ссылка null ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 15:25 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questionerкакой толк слипать тред если ссылка null ? Видишь, код ещё и запутанным вышел. sleep() это просто имитация полезной деятельности. Никакой смысла он в этом примере не несет. Приведенный код вообще изобилует тупаком. Так, например, у нас оказывается 2 экземпляра Thread, когда по-факту нужен только один. Второй тупо используется как Runnable. То есть у нас где-то есть ссылка на MyStopThread, которая обладает всеми методами Thread, но, их использовать нет смысла, так как этот поток не запущен. Вместо него запущен другой (OMFG!). Да, это будет покруче #define true false; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 15:34 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questionerА напишите пожалуйста, развернуто, как надо останавливать поток с примером кода, чтобы не было недопониманий у меня и всех остальных читающих топик. А чего тут развернуто? Тупо выкидываем всё лишнее: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Имеем код, который проще, и ничем не уступает приведенному. Стоит так же учесть что использовать класс Thread подобным образом раньше просто не рекомендовали, а с появлением j.u.c. так и вообще смысла нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 15:38 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerкакой толк слипать тред если ссылка null ? Видишь, код ещё и запутанным вышел. sleep() это просто имитация полезной деятельности. Никакой смысла он в этом примере не несет. Приведенный код вообще изобилует тупаком. Так, например, у нас оказывается 2 экземпляра Thread, когда по-факту нужен только один. Второй тупо используется как Runnable. То есть у нас где-то есть ссылка на MyStopThread, которая обладает всеми методами Thread, но, их использовать нет смысла, так как этот поток не запущен. Вместо него запущен другой (OMFG!). Да, это будет покруче #define true false; Что код говно я понял. Как надо не понял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 15:40 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerА напишите пожалуйста, развернуто, как надо останавливать поток с примером кода, чтобы не было недопониманий у меня и всех остальных читающих топик. А чего тут развернуто? Тупо выкидываем всё лишнее: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Имеем код, который проще, и ничем не уступает приведенному. Стоит так же учесть что использовать класс Thread подобным образом раньше просто не рекомендовали, а с появлением j.u.c. так и вообще смысла нет. Это код внутри потока. Если хотим закончить исполнение потока, то просто пишем Код: java 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 17:30 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
Наверное вопрос звучал - как остановить thread если разраб изначально никаких флажков туда не заложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 17:35 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
Всего три варианта: 1. Вытрясти (новый код из разработчика); 2. Переписать (самому); 3. Выбросить (с орг.выводами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 17:45 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я ведь правильно понимаю, что если я вызову thread.interrupt(), а поток в данный момент sleep или wait, то вылетит InterruptedException? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 18:09 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
questioner Blazkowicz, Я ведь правильно понимаю, что если я вызову thread.interrupt(), а поток в данный момент sleep или wait, то вылетит InterruptedException? Да, и на многих IO блокировках тоже, если я ничего не путаю. http://docs.oracle.com/javase/7/docs/api/java/io/InterruptedIOException.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 20:45 |
|
||
|
Как остановить Thread?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. если поток Future можно future.cancel(true); или жестко Thread.currentThread().interrupt(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 22:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39084111&tid=2124784]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 442ms |

| 0 / 0 |
