1 год назад
🧩 Задача «Три счётчика» (с подвохом
🧩 Задача «Три счётчика» (с подвохом) Условие Дан класс Counter с полем int value и методом increment(). Нужно запустить три параллельных потока, каждый увеличивает счётчик ровно 1 000 000 раз. В финале программа должна вывести Counter value = 3000000 Нельзя использовать synchronized, ReentrantLock, Atomic*, LongAdder, VarHandle. Допустимы любые потоки (обычные или виртуальные) и любая коллекция из стандартной библиотеки Java 19+. Тип поля менять нельзя — только int. ⚡️ В чем здесь подвох? Операция value++ не атомарна: «прочитать → увеличить → записать». Без привычных примитивов придётся найти альтернативный путь синхронизации...
4 года назад
Java с нуля: установка и настройка JDK (ч. 2)
Введение В предыдущей части мы написали очень простую программу с помощью онлайн-редактора кода. Если хотите, можете им пользоваться какое-то время. Но рано или поздно придется идти дальше в познании Java и сопутствующих технологий. А для этого уже нужны совсем другие инструменты. О некоторых из них мы и поговорим в этой статье. Для того чтобы начать писать приложения на Java у себя на компьютере, требуется выполнить подготовительную работу, связанную с установкой и настройкой необходимых программ...
413 читали · 2 года назад
Java 1078. Как поделиться данными между двумя потоками?
В Java существует несколько способов поделиться данными между двумя потоками. Вот некоторые из распространенных подходов: Синхронизированный метод или блок: Вы можете использовать ключевое слово synchronized для обеспечения синхронизации доступа к общим данным. Это позволит только одному потоку одновременно выполнять код в синхронизированном блоке или методе. // Объект, содержащий общие данные class SharedData { private int sharedVariable; public synchronized void setSharedVariable(int value) { this...