Получи случайную криптовалюту за регистрацию!

Java Guru 🤓

Логотип телеграм канала @javatasks — Java Guru 🤓 J
Логотип телеграм канала @javatasks — Java Guru 🤓
Адрес канала: @javatasks
Категории: Технологии
Язык: Русский
Количество подписчиков: 11.63K
Описание канала:

Канал с вопросами и задачами с собеседований!
По сотрудничеству и рекламе: @NadikaKir
Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm

Рейтинги и Отзывы

3.50

2 отзыва

Оценить канал javatasks и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения

2022-10-05 08:21:17 AtomicInteger, AtomicLong, AtomicBoolean, AtomicDouble

• Атомики предоставляют возможность изменения переменной в нескольких потоках без эффекта гонок.
• Например, 10 тредов инкрементят AtomicInt = 0, основной тред ждет их выполнения через countdown-latch, далее проверка атомика должна показать 10.
• Основной механизм под капотом атомиков — цикл cas (compare-and-set). На примере increment:
1. Читаем старое значение
2. Перед set'ом проверяем старое значение, если оно не изменилось, сетаем старое + 1
3. Если изменилось, в след. итерации получаем «новое» старое, далее см. п. 1
1.3K views05:21
Открыть/Комментировать
2022-10-04 17:10:15
Что выведет программа в консоль?
Anonymous Quiz
42%
123456
15%
1234567
29%
012345
15%
0123456
717 voters1.6K views14:10
Открыть/Комментировать
2022-10-04 17:10:13
Что выведет программа в консоль?
1.6K views14:10
Открыть/Комментировать
2022-10-03 08:45:54 Как поймать exception из другого треда?

Зарегистрировать Thread.UncaughExceptionHandler
1.9K views05:45
Открыть/Комментировать
2022-10-02 09:48:33
Что будет выведено в результате выполнения кода?
Anonymous Quiz
10%
int
36%
Object
31%
Integer
22%
Ошибка компиляции
926 voters2.2K views06:48
Открыть/Комментировать
2022-10-02 09:48:30
Что будет выведено в результате выполнения кода?
2.1K views06:48
Открыть/Комментировать
2022-10-01 08:41:51 volatile. happens-before.

• Ключевое слово volatile устанавливает отношение happens-before над операциями записи-чтения на поле
• Таким образом, операции чтения из читающих тредов будут видеть эффекты записи пишущих тредов.
• В частности, решается проблема double checked locking. Для double/long типов есть проблема атомарности, она решается через атомики
2.4K views05:41
Открыть/Комментировать
2022-09-30 09:02:50
Что будет в результате компиляции и выполнения данного кода?
Anonymous Quiz
28%
c
31%
a b c
9%
c b a
32%
Ошибка компиляции
819 voters2.6K views06:02
Открыть/Комментировать
2022-09-30 09:02:47
Что будет в результате компиляции и выполнения данного кода?
2.4K views06:02
Открыть/Комментировать
2022-09-29 08:37:49 synchronized. wait/notify/notifyAll. Как есть примитивы аналоги из пакета j.u.c?

Дальше тезисы:
• synchronized — ключевое слово, обозначающее скоуп критической секции. Можно ставить напротив объявления метода, или в виде блока в коде.
• wait() — ожидание треда до тех пор, пока он не будет разбужен другим тредом через notify/notifyAll.
• У wait() есть перегруженные версии с таймаутами.
• Тред ставится в wait-set на объекте
• Перед вызовом wait() нужно захватить монитор на данном объекте (через synchronized)
• Магия wait() — он отпускает лок на мониторе объекта после вызова, так чтобы в дальнейшем другой тред мог захватить монитор и вызвать notify/notifyAll
• notify() — будит один из ожидающих тредов, но Важно! — лок на объекте не отпускает, т.е ожидающий тред разбужен будет, но с ожиданием входа в критическую секцию объекта (т.к как будто остановился на synchronized). Так что если после notify есть тяжелые операции, это затормозит ожидающий тред, т.к тред с notify еще не отпустил монитор
• notifyAll() — будут разбужены все треды в wait-set, но при этом далее между тредами происходит contention («сражение») за монитор
• Тред на wait() может быть разбужен также через interrupt, или через spurious wake-up, или по таймауту
• Так что условие выполнения, которого ожидает тред, проверяется в цикле while, а не в if
• Примитив-аналог —
Condition
2.7K views05:37
Открыть/Комментировать