Общие вопросы
Смешанные вопросы по Java.
Открыть разделБаза Hintsage
Язык Java, JVM и экосистема серверной разработки.
Темы раздела
Смешанные вопросы по Java.
Открыть разделБазовая семантика языка, типы, методы, классы и ключевые конструкции.
Открыть разделНаследование, полиморфизм, интерфейсы, классы и разрешение методов.
Открыть разделJava Collections Framework, контракты, реализации и сложность операций.
Открыть разделJava Memory Model, потоки, синхронизация и java.util.concurrent.
Открыть разделЗагрузка классов, память JVM, GC, JIT и диагностика.
Открыть разделПараметризация типов, bounds, wildcards и стирание типов.
Открыть разделФункциональные интерфейсы, streams, collectors и параллельная обработка.
Открыть разделИерархия исключений, обработка ошибок и управление ресурсами.
Открыть разделПрактика
Имеет ли Thread.yield() гарантированный эффект для планировщика Java?
Два потока одновременно впервые обращаются к классу со статическим состоянием: какую гарантию даёт инициализация класса?
Какую границу атомарности устанавливает compute для одного ключа в ConcurrentHashMap?
При исключении внутри synchronized-блока кто и в какой момент освобождает монитор?
После успешного Future.get() какие изменения, выполненные внутри задачи, обязан увидеть вызывающий поток?
Разберите ленивую инициализацию singleton с double-checked locking: зачем ссылке на экземпляр нужен volatile?
Найдена ошибка: общий список обёрнут в Collections.synchronizedList, но его перебирают без внешней синхронизации. Почему это всё ещё небезопасно?
В следующем коде функция обновления записывает сообщение в журнал. Какой скрытый риск возникает при конкуренции нескольких потоков?
import java.util.concurrent.atomic.AtomicInteger;
class Demo {
static final AtomicInteger value = new AtomicInteger();
static int next() {
return value.updateAndGet(old -> {
System.out.println("old=" + old);
return old + 1;
});
}
}
В следующем коде задача завершается исключением. Определите, где окажется это исключение и почему оно не выводится обработчиком необработанных исключений потока.
import java.util.concurrent.*;
class Demo {
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newSingleThreadExecutor();
Future<?> future = pool.submit(() -> {
throw new IllegalStateException("boom");
});
System.out.println("done");
pool.shutdown();
}
}
В сценарии с поэтапной обработкой, где число участников меняется, почему Phaser подходит лучше CountDownLatch?
Очередь ThreadPoolExecutor заполнена, достигнут максимум потоков, а для отклонённых задач выбран CallerRunsPolicy. В каком потоке выполнится новая задача?
При чтении обычного поля long одним потоком во время записи этого поля другим потоком возможна ли атомарная ошибка чтения?
Во время Object.wait() поток временно теряет монитор объекта или сохраняет его до пробуждения?
При обновлении данных под ReentrantReadWriteLock как сохранить возможность чтения после записи, не открывая окно между блокировками?
В системе производители и потребители должны ожидать разные условия одной блокировки. Чем Condition при ReentrantLock принципиально отличается от wait/notify на одном мониторе?
Сервис держит heap ниже установленного лимита, но RSS процесса постоянно растёт после обработки сетевых запросов. Какой механизм JVM может объяснить это расхождение?
Объясните, почему классы с одинаковым полным именем, загруженные двумя независимыми загрузчиками, считаются разными типами в JVM.
Как JVM решает, какие методы переводить из интерпретируемого режима в машинный код?
Как JVM достигает глобальной остановки Java-потоков перед некоторыми операциями виртуальной машины?
На G1 крупные массивы вызывают частые паузы при умеренной заполненности heap. Как размер одного объекта может привести к такому поведению?
Показано 201–220 из 403