Skip to content

Commit c7f232b

Browse files
committed
add
1 parent 871cbb1 commit c7f232b

File tree

26 files changed

+749
-0
lines changed

26 files changed

+749
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.gradle/
2+
build/

java-advanced-ru/multithreading-java/.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-java/.idea/checkstyle-idea.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-java/.idea/compiler.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-java/.idea/gradle.xml

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-java/.idea/misc.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

java-advanced-ru/multithreading-java/.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
test:
2+
gradle test

java-advanced-ru/multithreading-java/README.html

Lines changed: 74 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Многопоточность в Java
2+
3+
В этом домашнем задании мы напишем первое многопоточное приложение на Java. Наша программа будет обрабатывать в многопоточном режиме массив целых чисел и находить в нём максимум и минимум.
4+
5+
## Ссылки
6+
7+
* [Класс Thread – представляет собой поток выполнения в Java](https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Thread.html)
8+
* [Метод run() – содержит логику, которую должен выполнить поток](https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Thread.html#run())
9+
* [Метод start() – запускает поток](https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Thread.html#start())
10+
* [Метод join() – приостанавливает текущий поток до тех пор, пока не закончится выполнение указанного](https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Thread.html#join())
11+
12+
## main/java/exercise/MaxThread.java
13+
14+
## Задачи
15+
16+
* Создайте поток, который будет находить максимальное число в массиве целых чисел. Класс потока унаследуйте от класса `java.lang.Thread`. Переопределите в классе метод `run()`, в котором напишите логику поиска максимального числа в массиве.
17+
18+
## main/java/exercise/MinThread.java
19+
20+
## Задачи
21+
22+
* Создайте поток, который будет находить минимальное число в массиве целых чисел. Класс потока унаследуйте от класса `java.lang.Thread`. Переопределите в классе метод `run()`, в котором напишите логику поиска минимального числа.
23+
24+
## main/java/exercise/App.java
25+
26+
## Задачи
27+
28+
* В классе создайте публичный статический метод `getMinMax()`. Метод принимает в качестве аргумента массив целых чисел. Условимся, что массив содержит минимум один элемент. Метод должен возвращать максимальный и минимальный элемент массива в виде словаря `Map<String, Integer>`:
29+
30+
```java
31+
int[] numbers = {10, -4, 67, 100, -100, 8};
32+
33+
System.out.println(App.getMinMax(numbers)); // => {min=-100, max=100}
34+
```
35+
36+
Реализуйте метод так, чтобы вычисления производились в два потока. Первый поток ищет максимальное число в массиве, второй – минимальное. Используйте для этого созданные классы потоков.
37+
38+
* Чтобы наглядно отследить старт и окончание работы потока, добавьте в метод логгирование.
39+
40+
Пример вывода лога:
41+
42+
```bash
43+
INFO: Thread Thread-3 started
44+
INFO: Thread Thread-3 finished
45+
```
46+
47+
### Подсказки
48+
49+
* Исходные данные (массив с числами) можно передать в конструктор при создании экземпляра потока
50+
51+
* Чтобы удобно получить результат работы потока, можно создать геттер

0 commit comments

Comments
 (0)