Технологии Java
Concurrency Utilities
| Действие | Исключение | Значение | Ожидание |
|---|---|---|---|
| Вставка | add(e) | offer(time?) | put(e) |
| Чтение | element() | peek() | |
| Удаление | remove() | poll(time?) | take() |
while (true) {
E e;
// Создание элемента
queue.put(e);
}
while (true) {
E e = queue.take();
// Обработка элемента
}
class Max extends RecursiveTask<Integer> {
private final List<Integer> data;
public Max(List<Integer> data) { this.data = data; }
public Integer compute() {
int s = data.size();
if (s == 1) return data.get(0);
Max m1 = new Max(data.subList(0, s / 2));
Max m2 = new Max(data.subList(s / 2, s));
m2.fork();
return Math.max(m1.compute(), m2.join());
}
}
final Max task = new Max(data); ForkJoinPool.commonPool().execute(task); Integer max = task.get();
try (
ExecutorService executor = Executors
.newVirtualThreadPerTaskExecutor()
) {
IntStream.range(0, 10_000).forEach(i -> {
executor.submit(() -> {
Thread.sleep(Duration.ofSeconds(1));
return i;
});
});
}
// +
response.send(
future1.get() // ‒
+ // +
future2.get() // ‒
); // +