|
|
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Надо по таймауту прервать выполнение задачи. Пока нарисовал такой тест Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Но думаю, что это негуманно при каждом запросе создавать пул потоков (да еще при том, что всегда порождается только один поток). Есть ли более адекватные варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 13:36 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Сори, видимо, надо вместо newFixedThreadPool просто SingleThreadExecutor... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 13:39 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Прервать поток или убить процесс и завершить выполнение программы? По хорошему не нужно прервать достаточно сообщить что дальше выполнять ничего не нужно. В Вашем примере нужно сохранить ссылку на NewTask и проинформировать его о том что уже хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:13 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Другой вопрос если в Runnable вызывается чтото блокирующее, например http соединение с timeout в 3 минуты. Как это все красиво организовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:15 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDS, Посмотри на методы Future.cancel() и Future.get(). Какое отношение метод main(String[] args) имеет к гуманизму и запросам, мне не очень понятно. Задача нужна для web? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:18 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКакое отношение метод main(String[] args) имеет к гуманизму и запросам, мне не очень понятно. Задача нужна для web? main - просто кусок тестового примера. Не только веб: таймаут при вызове NewTask может быть и до обращения к web. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:29 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDS, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:34 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDSmain - просто кусок тестового примера. Не только веб: таймаут при вызове NewTask может быть и до обращения к web. М-да. Опять допрос с пристрастием. Если "не только веб", то кто же ещё? Если таймаут будет до обращения, то по какому событию NewTask вообще запускается??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:35 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 14:36 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
Не уточнил, ява5, там не нахожу Consumer. Вариант с newCachedThreadPool c управлением внутри него потоками конечно интереснее, чем es.shutdown(); + es.awaitTermination. BlazkowiczЕсли таймаут будет до обращения, то по какому событию NewTask вообще запускается??? Внутри NewTask есть методы, которые могут долго выполняться, кроме обращения к http. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 15:18 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDSНе уточнил, ява5, там не нахожу Consumer. Ах, какая незначительная деталь. И как вас так угораздило? Java 6 я бы ещё с натяжкой мог понять. Но 5 - это за гранью. Да, она тупо медленне Java 7-8 процетов на 10 минимум. JDSВариант с newCachedThreadPool c управлением внутри него потоками конечно интереснее, чем es.shutdown(); + es.awaitTermination. Какое ещё "внутри"? Не нужно каждый раз создавать пул и убивать его только для того чтобы проверить состояние другого потока. JDSВнутри NewTask есть методы, которые могут долго выполняться, кроме обращения к http. Да, пофигу что там внутри. Краулер что ли пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 15:28 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИ как вас так угораздило? Java 6 я бы ещё с натяжкой мог понять. Но 5 - это за гранью. Так получилось ) BlazkowiczКакое ещё "внутри"? Не нужно каждый раз создавать пул и убивать его только для того чтобы проверить состояние другого потока. Об том и речь, что так-то оно гораздо лучше конечно. Только все это еще крутится внутри БД и надо еще проверить как будет вести себя класс с этим пулом при обращении к нему из разных сессий, есть подозрение, что могут быть нюансы: например, если делать общий пул в классе, для всех сессий, то приведенным вначале способом es.shutdown() работать как бы не очень гуд (пока сделал через newSingleThreadExecutor, вроде пашет, но с пулом было бы конечно интереснее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 16:04 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDS Только все это еще крутится внутри БД Ещё один совершенно незначительный нюанс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 16:09 |
|
||
|
Прервать поток
|
|||
|---|---|---|---|
|
#18+
JDS, ИМХО, в таких случаях лучше задачу реализовать отдельным процессом, а из оракла дергать сервис хоть по RMI, хоть ещё как. Можно тупак какой-нибудь налисопедить и без JUC Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2016, 16:17 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39376102&tid=2123324]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 439ms |

| 0 / 0 |
