
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.09.2012, 18:10:23
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
Добрый день люди! Такая штука: Есть некий цикл, которий в каждом своем пробеге запускает поток. Пока работает этот поток, то цикл должен ждать его завершения и только потом переходить ко втому пробегу цикла. Так же этот поток имеет 10с на все свои дела, если не успел, то он останавливается. Думал что-то такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но здесь цикл не ждет окончания выполнения потока t, а идет дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:16:02
|
|||
|---|---|---|---|
Ожидание завершения потока |
|||
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:21:08
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
denis11111Так же этот поток имеет 10с на все свои дела, если не успел, то он останавливается. С точки зрения best practices, поток нельзя остановить через 10 секунд. Он сам может проверить, а не пора ли выйти, и потом закончить свои дела. Если же поток блокируется, то можно попробовать метод interrupt() denis11111Но здесь цикл не ждет окончания выполнения потока t, а идет дальше... Ждет 10 секунд, или когда поток закончится, что наступит раньше. Что ваш поток делает-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:21:57
|
|||
|---|---|---|---|
Ожидание завершения потока |
|||
|
#18+
А, забыл про таймаут Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И Task должен быть запрограммирован так, чтобы реагировать на interrupt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:22:33
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
забыл ник, Да, почти то что нужно, за исключением того, что активные таски не умрут, до своего завершения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:28:39
|
|||
|---|---|---|---|
Ожидание завершения потока |
|||
|
#18+
Blazkowiczзабыл ник, Да, почти то что нужно, за исключением того, что активные таски не умрут, до своего завершения. Уже поправился:) авторExecutorService.html#invokeAll(java.util.Collection, long, java.util.concurrent.TimeUnit) Немного не то - тут надо выполнять таски последовательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:31:31
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
забыл никНемного не то - тут надо выполнять таски последовательно Так если пул на 1 поток, то и будут последовательно. Не очень понял из доки как тут таймаут влияет. Возможно он глобальный. Поэтому метод не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:43:28
|
|||
|---|---|---|---|
Ожидание завершения потока |
|||
|
#18+
Blazkowiczзабыл никНемного не то - тут надо выполнять таски последовательно Так если пул на 1 поток, то и будут последовательно. Не очень понял из доки как тут таймаут влияет. Возможно он глобальный. Поэтому метод не подходит. Таймаут глобальный, да и invokeAll не передает мысль что таски должны быть выполнены последовательно, да и таски обычно зависят следующий от предыдущего, иначе зачем их выполнять последовательно? И следовательно на момент запуска invokeAll еще не известны. А так вообще способ конечно оригинальный:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 18:46:11
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
забыл никinvokeAll не передает мысль что таски должны быть выполнены последовательно Почему? С пулом в 1 поток порядок должен быть фиксирован. забыл никда и таски обычно зависят следующий от предыдущего, иначе зачем их выполнять последовательно? И следовательно на момент запуска invokeAll еще не известны. А так вообще способ конечно оригинальный:) Это правильно подмечено. Интересно, можно ли наполнять коллекцию по мере выполнение тасков. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 19:02:41
|
|||
|---|---|---|---|
Ожидание завершения потока |
|||
|
#18+
Blazkowiczзабыл никinvokeAll не передает мысль что таски должны быть выполнены последовательно Почему? С пулом в 1 поток порядок должен быть фиксирован. Ну кто-то может случайно изменить размер пула, и это неочевидно отразится на выполнении программы, имхо такого нельзя допускать. А когда намерение явно выражено в коде, 5 раз подумаешь прежде, чем менять. Ну это мое мнение. Blazkowiczзабыл никда и таски обычно зависят следующий от предыдущего, иначе зачем их выполнять последовательно? И следовательно на момент запуска invokeAll еще не известны. А так вообще способ конечно оригинальный:) Это правильно подмечено. Интересно, можно ли наполнять коллекцию по мере выполнение тасков. :) Нельзя, жавадок прямо об этом говорит The results of this method are undefined if the given collection is modified while this operation is in progress. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2012, 19:16:27
|
|||
|---|---|---|---|
|
|||
Ожидание завершения потока |
|||
|
#18+
забыл никНу кто-то может случайно изменить размер пула, и это неочевидно отразится на выполнении программы, имхо такого нельзя допускать. А когда намерение явно выражено в коде, 5 раз подумаешь прежде, чем менять. Ну это мое мнение. Ну, это я тоже всё в порядке бреда. Твой вариант, более читаемый, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2131017]: |
0ms |
get settings: |
13ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 335ms |
| total: | 484ms |

| 0 / 0 |
