Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 5108 Лабораторна робота №3 на тему Неблокуючі алгоритми

Лабораторна робота №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"!