|
|
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Хотел спросить где можно почитать или как реализовать волшебную кнопочку Cancel. По которой будет генерироваться событие, которое можно будет поймать в Task<T> и совершить сохранение проделанной работы, после чего поток закончится. Причем, хорошо бы, чтобы узнать о том, что задача закончилась можно было бы в любом месте выполняемого задачей кода, не знающем о самой Task. реализация идет new Thread(Task<T>).start() и callback<T> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:13 |
|
||
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
DNShark, Любой event bus + в тасковом тхреде проверять флаг того, что пользователь нажал на cancel периодически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:22 |
|
||
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
Не знаю где найти нормальный tutorial. Но вам нужно смотреть не Thread/Runnable, а более современный API Executors, ExecutorService и Future у которого есть метод cancel. Важно понимать, что ваш фоновый процесс Callable\Runnable должен уметь обрабатывать отмену через флаг или InterruptedException. Процесс, который не блокируется и не проверяет флаг прерывать не безопасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:28 |
|
||
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
public abstract class Task<V> extends FutureTask<V> implements Worker<V>, EventTarget вродь, не такое старое API ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:40 |
|
||
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
ага, спасибо. Т.е. надо реализовать cancel, а потом реализовать внутре busEvent. Насколько я понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:41 |
|
||
|
Cancel thread button
|
|||
|---|---|---|---|
|
#18+
Только проблема в том, что в местах большой загрузки я не могу написать task.isCancelled(). Или мне придется в самую глубь кода передавать всю таску.... Что не хотелось бы делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 17:45 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39278930&tid=2123871]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 275ms |

| 0 / 0 |
