Лабораторна робота №3 на тему Неблокуючі алгоритми
« Назад 1) Розробити програму, яка за допомогою AtomicInteger і метода compareAndSet: виконує наступні операції для одновимірного массиву. Для потоків використовувати ExecutorService або parallelStream. 2) Створити паралельні фкнкції для знаходження: - кількості елементів за умовою; - мінімального та максимального елементів з індексами; - контрольної суми із використанням XOR. Приклад виконання роботи: packagecom.company; import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { int sum[] = new int[1]; int array[] = new int [100500]; AtomicInteger atomicSum = new AtomicInteger(); Arrays.fill(array,1); IntStream.of(array).parallel().forEach( x-> { sum[0] += x; int oldValue; int newValue; do{ oldValue = atomicSum.get(); newValue = oldValue + x; }while(!atomicSum.compareAndSet(oldValue , newValue)); }); System.out.println(sum[0]); System.out.println(atomicSum.get()); } } З повагою ІЦ "KURSOVIKS"! |