JavaRush /Курсы /Java Multithreading /Задачи по volatile

Задачи по volatile

Java Multithreading
6 уровень , 5 лекция
Открыта
Задачи по volatile - 1

— Привет, Амиго!

8
Задача
Java Multithreading, 6 уровень, 5 лекция
Недоступна
Для того, чтобы усовершенствовать ум, надо больше размышлять, чем заучивать
Расставь volatile там, где необходимо.
8
Задача
Java Multithreading, 6 уровень, 5 лекция
Недоступна
Трудолюбие - душа всякого дела и залог благосостояния
Расставь volatile там, где необходимо.
8
Задача
Java Multithreading, 6 уровень, 5 лекция
Недоступна
Тот, кто любит труд, не нуждается в развлечениях
Расставь volatile там, где необходимо.
Комментарии (75)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Alexey Уровень 29
13 ноября 2023
Модификатор volatile необходим для того, что при использовании многопоточной среды, нити обращаясь к одной и той же переменной именно из основной памяти, а не из своего кеша. (кеша нити) По задачам от вас не требуется вникать в код. Четкая задача расставь volatile там где это необходимо. Нужно посмотреть какие переменные используются в методе run, которые не являются финальными и которые изменяются в процессе работы.
Ra Уровень 5 Student
29 июня 2023
Попытаюсь записать процесс решения задачи 2605. Может пойму что-то)) Нам нужно пометить переменные как volatile, значит, к этим переменным должны обращаться как минимум 2 нити. Всего у нас 5 переменных. Сначала у нас работает нить main. Main создаёт нить taskThread с RethrowableTask. taskThread стартует и кидает исключение, в throwable из taskThread записывается runtimeException. Далее main создаёт ещё одну нить с interruptScheduledExecutor, которая должна поставить флаг interrupt в taskThread через 1 секунду. Эта нить по моему ни на что не влияет и к переменным не обращается. Итого у нас 3 нити. Далее main засыпает на 1 секунду и потом вызывает rethrow(), которая обращается к throwable. Далее main выполняет interruptScheduledExecutor.shutdown(); Получается к throwable обращались 2 нити - main и taskThread. А остальные переменные использовались каждая только в свой одной нити.
Gans Electro Уровень 2
12 июня 2023
Почему final и volatile не могут быть вместе?

1.public ||
2.protected ||
3.private ||

4.abstract ||    (!&& (static || final || synchronized))
5.default ||

6.static    (!&& abstract)
7.final    (!&& (abstract || volatile))

8.transient
9.volatile (!&& final)

10.synchronized    (!&& abstract)

11.native
12.strictfp

|| - знак или. Не могут быть поля или методы у которого 
(Например: public private void method()) они стоят подряд
!&& - знак не могут быть в паре.

Что скажете о строке:
private default static transient volatile void method()
{System.out.println("The World!")}

ChatGPT:
1. В классе:
public
protected
private
abstract
static
final
default
strictfp

2. В методе:
public
protected
private
abstract
static
final
default
strictfp

synchronized
native

3. В полях:
public
protected
private
static
final
transient
volatile

4. В переменных:
final
transient
volatile

5. В других местах в коде:
synchronized
native

"В других местах в коде" означает, что эти ключевые слова могут
использоваться в других частях кода, например:

В параметрах методов.
В аргументах конструкторов.
В объявлении исключений методов.
В типах параметров и возвращаемых значений методов.
В лямбда-выражениях.
В статических инициализаторах блоков.
В аннотациях и многое другое.
Дарья Уровень 39
8 апреля 2023
ничего не понятно, что в этих всех задачах происходит, в лекциях ничего такого не объясняют..
Lafaed Уровень 36
10 апреля 2023
самое главное что ты денег заплатил за подписку, а остальное неважно, остальное - всё пыль...
Andrey Chuev Уровень 43
20 ноября 2022
Что такие низкие оценки?) В целом полезная практика для развития понимания общих ресурсов
Наида Уровень 41
12 октября 2022
все методом тыка (( в голове только отложилось, что final не может быть volatile
Vkt Pra Уровень 30
26 февраля 2023
спасибо IDE
Anonymous #3155398 Уровень 41
27 сентября 2022
Всего эту задачу решили 9359 учеников.
Lafaed Уровень 36
10 апреля 2023
это не даёт никакой информации, полезнее писать сколько потрачено попыток и процент решаемости.
Станислав Future Уровень 39
15 июля 2022
*Навык получен* понятия не имею, что происходит в данном коде, но эту переменную используют несколько нитей и ее нужно пометить как volatile
Anonymous #3161756 Уровень 40
21 марта 2023
Собственно это и есть суть)
Buble76 Уровень 1
8 июня 2022
Всего эту задачу решили 8835 учеников
JavaCoder Уровень 51
8 июня 2022
Этот блок задач скорее разочаровал.