TGViewer
Java Learning Java Learning @java_per_month · 16.5K subscribers
Post #2940 3.04K
❓ Вопрос на собеседовании

Что такое "false sharing" в многопоточном Java-приложении и как его можно избежать?

Ответ ⬇️
"False sharing" — это ситуация, когда несколько потоков обновляют разные переменные, находящиеся в одном кэше процессора. Это приводит к снижению производительности из-за необходимости синхронизации кэшей. Чтобы избежать "false sharing", можно использовать аннотацию @Contended (с включенной опцией JVM) или добавлять дополнительные поля для выравнивания.

🗣 Пример:
public class Main {
private static class Counter {
// Добавляем дополнительные поля для выравнивания
private long p1, p2, p3, p4, p5, p6, p7;
public volatile long count = 0;
private long q1, q2, q3, q4, q5, q6, q7;
}

public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});

Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});

thread1.start();
thread2.start();

thread1.join();
thread2.join();

System.out.println("Итоговое значение: " + counter.count);
}
}

// Результат выполнения:
// Итоговое значение: 2000000


Java Learning 👩‍💻
  • 👍 6
  • ❤‍🔥 2
  • 😱 2
More from @java_per_month
  1. Oct 6, 2026🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь,…
  2. Oct 6, 2026⚙️ Set.retainAll() В Java метод Set.retainAll() позволяет оставить только те элементы множ…
  3. Sep 14, 2026❓ Вопрос на собеседовании Что такое ForkJoinPool в Java, как он работает, и как его исполь…
  4. Sep 4, 2026⚙️ List.subList() В Java метод subList() позволяет создать представление части списка. Это…
  5. Sep 1, 2026🔴 Завтра тестовое собеседование с Java-разработчиком 2 сентября(уже завтра!) в 19:00 по м…
  6. Aug 17, 2026➡️ Quarkus — быстрый и лёгкий фреймворк для Java-приложений Quarkus — оптимизированный фре…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →