Ответ
Да, могу предоставить примеры кода и объяснить концепции. Например, для демонстрации Java Stream API:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Alice", "Bob", "Eve");
List<String> filtered = names.stream()
.filter(name -> name.length() > 3) // Фильтрация по длине
.sorted() // Сортировка
.collect(Collectors.toList()); // Сбор в список
System.out.println(filtered); // Вывод: [Alice, John]
}
}
Почему это работает:
stream()создает поток элементовfilter()отбирает элементы по условию (лямбда-выражение)sorted()сортирует в естественном порядкеcollect()преобразует поток обратно в коллекцию
Для демонстрации потокобезопасности с AtomicInteger:
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;
public class ThreadSafeExample {
public static void main(String[] args) {
AtomicInteger counter = new AtomicInteger(0);
// Параллельное выполнение 1000 инкрементов
IntStream.range(0, 1000)
.parallel()
.forEach(i -> counter.incrementAndGet());
System.out.println(counter.get()); // Гарантированно 1000
}
}
Ключевой момент: AtomicInteger обеспечивает атомарные операции без блокировок, используя CAS (Compare-And-Swap) операции на уровне процессора.