Skip to content

Latest commit

 

History

History
65 lines (38 loc) · 4.28 KB

concurrency.adoc

File metadata and controls

65 lines (38 loc) · 4.28 KB

Concurrency.

  • Не использовать поток main, как поток, который выполняет какую-то задачу/работу.

  • Поток main является координирующим потоком, т.е. потоком где создаются другие потоки, общие ресурсы для этих потоков и т.д.

  • Необходимо корректно выделить задачу/работу, которую можно выполнить в отдельном потоке.

Project 'Master-worker'

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

Specification of task 1

Написать программу, бесконечно считывающую целые числа, которые пользователь вводит в Standard Input .

Specification of task 2

При вводе -1 программа завершает свою работу.

Specification of task 3

Когда пользователь вводит некорректные данные, то бросается собственный UserInputException.

Specification of task 4

Числа, вводимые пользователем, представляют собой количество секунд, на которое должен заснуть thread-worker. После чего thread-worker выводит в File: ${timestamp} - I slept ${seconds} seconds.

Specification of task 5

Все задачи, thread-worker выполняет в том порядке, в котором они были введены пользователем.

Specification of task 6

Когда у thread-worker нет текущих задач, то он выводит в File: ${timestamp} - …​ и засыпает на 1 секунду.

Project 'Parallel Calculator'

Tip
Если есть некоторое количество однотипных задач, то их следует выполнять параллельно. При этом возникает необходимость управления параллельным выполнением этих задач и сохранения их результата.

Specification of task 1

Реализовать метод:

  • принимающий список массивов, состоящий из случайных целых чисел (от 1 до 300) случайной длины (до 1 млн элементов)

  • возвращающий массивы и сумму элементов в них

Specification of task 2

Реализовать метод, аналогичный предыдущему, но принимающий количество потоков, в которых будет происходить выполнение.

Specification of task 3

Сравнить затраченное на выполнение время для списка массивов размерностью 10 для:

  • метода работающего в 1 потоке

  • метода работающего в 2 потоках

  • метода работающего в 5 потоках

  • метода работающего в 10 потоках

Project Censor*

  • Пользователь с клавиатуры вводит путь к существующей директории и слово для поиска.

  • После чего запускаются два потока.

    • Первый должен найти файлы, содержащие искомое слово и слить их содержимое в один файл.

    • Второй поток ожидает завершения работы первого потока. После чего проводит вырезание всех запрещенных слов (список этих слов нужно считать из файла с запрещенными словами) из полученного файла.

  • В методе main необходимо отобразить статистику выполненных операций.