CountDownLatch

В этой статье рассмотрим CountDownLatch. В отличие от CyclicBarrier, где все потоки равноправны и ожидают друг друга, с CountDownLatch потоки делятся на два типа — одни уменьшают значение CountDownLatch, а другие ждут, когда он станет равен 0, чтобы продолжиться.
Читать далее «CountDownLatch»

Ключевое слово volatile

Изменение переменной, сделанное в одном потоке, не сразу видно другому потоку. Исправить это можно с помощью volatile — ключевого слова, которое ставится перед переменной. В отличие от слова synchronized, которое применимо для метода или для блока кода, слово volatile применимо только для переменной. volatile — это более слабый вариант синхронизации, который иногда бывает достаточным.
Читать далее «Ключевое слово volatile»

@ComponentScan в @SpringBootApplication. Аннотация @Import

При запуске Spring-приложения пакеты сканируются. Из аннотированных с помощью @Component, @Service, @Repository и @Configuration клаccов создаются бины. В этой статье рассмотрим, как задаются пакеты и классы для сканирования.
Читать далее «@ComponentScan в @SpringBootApplication. Аннотация @Import»

Как в Java преобразовать List в массив, и наоборот

В этой статье рассмотрим, как преобразовать List в массив и наоборот: как преобразовать массив в List.
Читать далее «Как в Java преобразовать List в массив, и наоборот»

Передача параметров в Java: по значению или по ссылке?

В Java все параметры передаются по значению, хотя некоторые говорят, что, мол, объекты передаются по ссылке. Но это не так — сейчас объясню тонкость.
Читать далее «Передача параметров в Java: по значению или по ссылке?»

Лямбда-выражения в Java 8

В этой статье речь идет о лямбда-выражениях, функциональных интерфейсах. Подробно рассматривается синтаксис лямбда-выражений, а также приводятся стандартные функциональные интерфейсы из JDK.
Читать далее «Лямбда-выражения в Java 8»

Инъекция зависимости с помощью библиотеки Reflection

В этой статье мы реализуем шаблоны Dependency Injection и Inversion of Control — на этих шаблонах основана Spring Framework.
Читать далее «Инъекция зависимости с помощью библиотеки Reflection»

Аннотации в Java и их обработка в RUNTIME с помощью рефлексии

Аннотации — это своего рода маркеры, которые служат знаком либо компилятору, либо обработчику скомпилированных классов, либо самому приложению во время его выполнения — знаком что-то сделать.  Для аннотаций всегда нужен обработчик, сами они ничего не делают.
Читать далее «Аннотации в Java и их обработка в RUNTIME с помощью рефлексии»