Перейти к основному содержимому

1310 записей с тегом "Java"

Посмотреть все теги

· 13 мин. чтения

1. Обзор

В этом всеобъемлющем руководстве мы рассмотрим практическое использование потоков Java 8 от создания до параллельного выполнения.

Чтобы понять этот материал, читатели должны иметь базовые знания Java 8 (лямбда-выражения, необязательно, ссылки на методы) и Stream API. Чтобы лучше ознакомиться с этими темами, ознакомьтесь с нашими предыдущими статьями: « Новые возможности в Java 8 » и « Введение в потоки Java 8» .

2. Создание потока

· 2 мин. чтения

1. Введение

В этой короткой статье мы сосредоточимся на распространенной проблеме тестирования, если два экземпляра List содержат одни и те же элементы в точно таком же порядке.

Список — это упорядоченная структура данных, поэтому порядок элементов имеет значение по дизайну.

взгляните на отрывок из документации List#equals Java:

… два списка считаются равными, если они содержат одни и те же элементы в одном и том же порядке.

Это определение гарантирует правильную работу метода equals в различных реализациях интерфейса List.

· 4 мин. чтения

1. Обзор

В этой статье мы рассмотрим дополнения Java 9 к необязательному API.

Помимо модульности, в Java 9 также добавлены три очень полезных метода для класса Optional .

2. Метод or ()

Иногда, когда наш необязательный элемент пуст, мы хотим выполнить какое-то другое действие, которое также возвращает необязательный элемент.

· 9 мин. чтения

1. Введение

В этой статье мы рассмотрим, как использовать библиотеку ASM для управления существующим классом Java путем добавления полей, добавления методов и изменения поведения существующих методов.

2. Зависимости

Нам нужно добавить зависимости ASM в наш pom.xml :

<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>6.0</version>
</dependency>

· 9 мин. чтения

1. Обзор

Java 8 предоставляет API для создания подключаемых модулей Javac . К сожалению, для него трудно найти хорошую документацию.

В этой статье мы собираемся показать весь процесс создания расширения компилятора, которое добавляет пользовательский код в файлы *.class .

2. Настройка

Во-первых, нам нужно добавить tools.jar JDK в качестве зависимости для нашего проекта:

· 3 мин. чтения

1. Обзор

В этой быстрой статье мы рассмотрим CopyOnWriteArrayList из пакета java.util.concurrent .

Это очень полезная конструкция в многопоточных программах — когда мы хотим выполнить итерацию по списку потокобезопасным способом без явной синхронизации.

2. API CopyOnWriteArrayList

В дизайне CopyOnWriteArrayList используется интересный метод, позволяющий сделать его потокобезопасным без необходимости синхронизации. Когда мы используем любой из методов модификации, таких как add() или remove() , все содержимое CopyOnWriteArrayList копируется в новую внутреннюю копию.

· 5 мин. чтения

1. Обзор

В этой статье мы рассмотрим конструкцию DelayQueue из пакета java.util.concurrent . Это блокирующая очередь, которую можно использовать в программах производитель-потребитель.

У него есть очень полезная характеристика — когда потребитель хочет взять элемент из очереди, он может взять его только тогда, когда истечет задержка для этого конкретного элемента.

2. Реализация Delayed для элементов в DelayQueue

Каждый элемент, который мы хотим поместить в DelayQueue , должен реализовать интерфейс Delayed . Допустим, мы хотим создать класс DelayObject . Экземпляры этого класса будут помещены в DelayQueue.

· 2 мин. чтения

1. Обзор

В этой быстрой статье мы будем использовать Java 8 Stream API и класс Introspector для вызова всех геттеров, найденных в POJO.

Мы создадим поток геттеров, проверим возвращаемые значения и посмотрим, является ли значение поля нулевым.

2. Настройка

Единственная настройка, которая нам нужна, — это создать простой класс POJO:

· 3 мин. чтения

1. Обзор

В этом коротком руководстве мы узнаем, как округлить число до n знаков после запятой в Java.

2. Десятичные числа в Java

Java предоставляет два примитивных типа, которые мы можем использовать для хранения десятичных чисел: float и double . Двойной тип по умолчанию:

· 3 мин. чтения

1. Обзор

В этой короткой статье мы рассмотрим сходства и различия между StringBuilder и StringBuffer в Java.

Проще говоря, StringBuilder появился в Java 1.5 как замена StringBuffer .

2. Сходства

И StringBuilder , и StringBuffer создают объекты, содержащие изменяемую последовательность символов. Давайте посмотрим, как это работает и как это соотносится с неизменяемым классом String :