Спасибо! Очень доходчивое объяснение! Но есть вопрос. Как я пронял метод get блокирует основной поток. Но допустим, мы хотим, чтобы была возможность параллельно выполнять какие-либо действия, как быть в этом случае? Получать future.get в условии if (future.isDone)?
Спасибо, хорошо все обьяснил. Получается только опытным путем можно понять, когда cancel точно остановит поток, например при условии что поток спит, то может его прервать и тем самым остановить задачу, вообще они могли в спецификации более подробно написать. Метод получается без особых гарантий, может остановит, а может нет.
Важно понимать что метод .cancel будет пытаться отменить поток до тех пор пока он сам не закончится или ему удасться это сделать, например если сделать sleep после "жесткого" засыпания, то перейдя в sleep поток все же убъется
Спасибо, очень хорошая лекция. Но один момент непонятен. На 19 минуте вы показываете пример с "жестким" удержанием потока без метода sleep(). В этом случае метод cancel() якобы не может прервать поток... С одной стороны это все понятно. С другой - почему метод isCancelled() опять вернул true? Мы же показали, что наша задача отработала целиком - от Started до Finished...
Ответ false будет в том случае, если поток УЖЕ завершился. В противном случае возвращается true и нам говорят - ну мы попробуем завершить поток, но гарантий нет. Но мы будем пробовать - вот и будет true. Ну вот такая вот реализация.
Отличная лекция! Очень доступно объяснили специфику методов. Спасибо!
Вот это уже понятно
спасибо, очень хорошая лекция, более лучшее и понятное объяснение пока не встречал)
+
Спасибо.
Спасибо! Очень доходчивое объяснение! Но есть вопрос. Как я пронял метод get блокирует основной поток. Но допустим, мы хотим, чтобы была возможность параллельно выполнять какие-либо действия, как быть в этом случае? Получать future.get в условии if (future.isDone)?
Надо более широко смотреть на конечную цель. Но в частном случае - да, такой вариант возможен.
Спасибо!
Спасибо, хорошо все обьяснил. Получается только опытным путем можно понять, когда cancel точно остановит поток, например при условии что поток спит, то может его прервать и тем самым остановить задачу, вообще они могли в спецификации более подробно написать. Метод получается без особых гарантий, может остановит, а может нет.
Добрый день. В приницпе да, я правда не попробовал все возможности и точно сказать, что именно хорошо работает в такой ситуации не смогу.
Сейчас посмотрим).
Большое спасибо!
Важно понимать что метод .cancel будет пытаться отменить поток до тех пор пока он сам не закончится или ему удасться это сделать, например если сделать sleep после "жесткого" засыпания, то перейдя в sleep поток все же убъется
Правильно ли я понимаю что эти методы дублируют. join, isInterrapted , interrapted
Спасибо, очень хорошая лекция. Но один момент непонятен.
На 19 минуте вы показываете пример с "жестким" удержанием потока без метода sleep(). В этом случае метод cancel() якобы не может прервать поток...
С одной стороны это все понятно. С другой - почему метод isCancelled() опять вернул true? Мы же показали, что наша задача отработала целиком - от Started до Finished...
Ответ false будет в том случае, если поток УЖЕ завершился. В противном случае возвращается true и нам говорят - ну мы попробуем завершить поток, но гарантий нет. Но мы будем пробовать - вот и будет true.
Ну вот такая вот реализация.
А что за вебинар 2х часовой вы упоминаете?
Есть два:
ua-cam.com/video/tVRcT-Ngvsw/v-deo.html
и
ua-cam.com/video/NiI008f_KnY/v-deo.html
Спасибо
Спасибо!