-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
77 lines (54 loc) · 2.63 KB
/
Copy pathSolution.java
File metadata and controls
77 lines (54 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//They said therefore, What is this that he saith, A little while? we cannot tell what he saith. (John 16:18)
package com.javarush.task.task28.task2806;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/*
Знакомство с Executors
*/
public class Solution {
public static void main(String[] args) throws InterruptedException {
ExecutorService service = Executors.newFixedThreadPool(5);
for (int i = 1; i < 11; i++)
{
final int temp = i;
service.submit(new Runnable() {
@Override
public void run() {
doExpensiveOperation(temp);
}
});
}
service.shutdown();
service.awaitTermination(5, TimeUnit.SECONDS);
/* output example
pool-1-thread-2, localId=2
pool-1-thread-1, localId=1
pool-1-thread-3, localId=3
pool-1-thread-1, localId=7
pool-1-thread-1, localId=9
pool-1-thread-4, localId=4
pool-1-thread-5, localId=5
pool-1-thread-2, localId=6
pool-1-thread-1, localId=10
pool-1-thread-3, localId=8
*/
}
private static void doExpensiveOperation(int localId) {
System.out.println(Thread.currentThread().getName() + ", localId="+localId);
}
}
/*
Знакомство с Executors
1. В методе main создай фиксированный пул из 5 трэдов используя класс Executors.
2. В цикле отправь на исполнение в пул 10 задач Runnable.
3. У каждой задачи в методе run вызови метод doExpensiveOperation с порядковым номером задачи начиная с 1, см. пример вывода.
4. Запрети добавление новых задач на исполнение в пул (метод shutdown).
5. Дай пулу 5 секунд на завершение всех задач (метод awaitTermination и параметр TimeUnit.SECONDS).
Требования:
1. Используя класс Executors, создай в методе main фиксированный пул из 5 трэдов.
2. Пул должен принимать на исполнение 10 задач Runnable.
3. Каждая задача должна вызывать метод doExpensiveOperation с порядковым номером задачи, начиная с 1.
4. Запрети добавление новых задач на исполнение в пул.
5. На завершение всех задач в пуле нужно установить 5 секунд.
*/