Практика синхронизации в Java
Переменная score и synchronized
метод addPoint(). Три потока по
200 вызовов. После ожидания выведите
итоговый счет.
Баланс wallet в объекте с полем
coins. Две задачи переводят по
5 монет через блок
synchronized (gate). Напечатайте сумму
после join.
ReentrantLock и счетчик errors.
Две задачи чередуют Thread.sleep и
приращение только внутри lock с
finally. Итог после 100 шагов
на задачу равен 200.
Семафор на 2 разрешения. Пять потоков
выводят "tap", ждут 40 мс и
освобождают слот в finally. Убедитесь,
что одновременно активны не более двух.
Класс Furnace с полем нагрева и
synchronized методом, который повышает
температуру на 3. Четыре параллельных
вызова должны дать 12 к базовому нулю.
CountDownLatch(5) и семь запусков,
из которых пять печатают номер и вызывают
countDown(). Главный поток после
await() выводит "batch done".
Класс Dock с семафором на два
причала. Метод погрузки ждет слот, печатает
имя груза, делает паузу 50 мс и
освобождает место. Проверьте четыре груза с
разными метками.
AtomicInteger и 3 потока по
250 addAndGet(1). Сверьте
результат с 750 без ручного замка.