-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathConsumer.java
More file actions
65 lines (51 loc) · 2.74 KB
/
Consumer.java
File metadata and controls
65 lines (51 loc) · 2.74 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
//Let a man so account of us, as of the ministers of Christ, and stewards of the mysteries of God. (1Cor 4:1)
package com.javarush.task.task26.task2611;
import java.util.concurrent.ConcurrentHashMap;
public class Consumer implements Runnable {
private ConcurrentHashMap<String, String> map;
public Consumer(ConcurrentHashMap<String, String> map) {
this.map = map;
}
public void run() {
Thread currentThread = Thread.currentThread();
while (!currentThread.isInterrupted()) {
if (!map.isEmpty()) {
for (String key : map.keySet()) {
System.out.println(map.remove(key));
}
}
}
}
}
/*
Мир не меняется, меняемся мы
Разберись с ConcurrentHashMap.
В отдельном файле создайте класс Producer, который будет:
1. каждые полсекунды добавлять в ConcurrentHashMap ключ и значение, где ключ — счетчик начиная с 1, значение — фраза: «Some text for i» , пример «Some text for 1«.
2. при возникновении исключения выводить в консоль: «[TREAD_NAME] thread was terminated«, пример «[thread-1] thread was terminated«.
Требования:
1. Класс Producer должен быть создан в отдельном файле.
2. Класс Producer должен реализовывать интерфейс Runnable.
3. Класс Producer должен содержать приватное поле ConcurrentHashMap map.
4. Класс Producer должен содержать конструктор с одним параметром, инициализирующий поле map.
5. Метод run() класса Producer должен каждые полсекунды добавлять в ConcurrentHashMap ключ и значение согласно заданию.
6. Метод run() класса Producer должен при возникновении исключения выводить в консоль "[TREAD_NAME] thread was terminated".
package com.javarush.task.task26.task2611;
import java.util.concurrent.ConcurrentHashMap;
public class Consumer implements Runnable {
private ConcurrentHashMap<String, String> map;
public Consumer(ConcurrentHashMap<String, String> map) {
this.map = map;
}
public void run() {
Thread currentThread = Thread.currentThread();
while (!currentThread.isInterrupted()) {
if (!map.isEmpty()) {
for (String key : map.keySet()) {
System.out.println(map.remove(key));
}
}
}
}
}
*/