-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathShareItem.java
More file actions
114 lines (66 loc) · 3.56 KB
/
Copy pathShareItem.java
File metadata and controls
114 lines (66 loc) · 3.56 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//Neither repented they of their murders, nor of their sorceries, nor of their fornication, nor of their thefts. (Revelation 9:21)
package com.javarush.task.task30.task3003;
//This class shows how to call other constructors using 'this'
public class ShareItem {
public String description;
public int itemId;
public ShareItem() {
this("Test Item", 0);
}
public ShareItem(String description) {
this(description, 0);
}
public ShareItem(int itemId) {
this("Test Item", itemId);
}
public ShareItem(String description, int itemId) {
this.description = description;
this.itemId = itemId;
}
public String getDescription() {
return description;
}
public int getItemId() {
return itemId;
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
public String toString() {
return super.toString();
}
}
/*
Экономим время
1. Создай Producer и Consumer (См. комментарий к методу main).
2. Создай методы toString, equals и hashCode в классе ShareItem. Для этого в IntelliJ IDEA в теле класса ShareItem выполни:
2.1. Alt+Enter -> toString() -> Enter.
2.2. Alt+Enter -> equals() and hashCode() -> click all 'Next'-s.
2.3. Реализацию методов toString(), equals() и hashCode() оставь такими, какими их сгенерировала IntelliJ IDEA.
3. В Producer и Consumer реализуй метод run так, чтобы вызов метода interrupt прерывал работу consumer и producer трэдов.
4. Реализация метода run для Producer:
4.1. Используя метод offer добавь в очередь 9 ShareItem-ов с такими параметрами: ("ShareItem-N", N), где N - номер элемента от 1 до 9.
4.2. Перед каждым добавлением выведи фразу "Элемент 'ShareItem-N' добавлен". Используй System.out.format.
4.3. Усыпи трэд на 0.1 секунды.
4.4. Если у очереди есть Consumer, не занятый работой, то выведи фразу "Consumer в ожидании!".
Просмотри методы интерфейса TransferQueue, там есть нужный метод.
5. Реализация метода run для Consumer:
5.1. Усыпи трэд на 0.45 секунды.
5.2. В бесконечном цикле забери элемент из очереди методом take и выведи в консоль "Processing item.toString()".
6. Сверь вывод с файлом output.txt.
7. Стек-трейс не выводи в консоль.
8. Для вывода любой информации на экран используй System.out.format.
Требования:
1. Создай класс Producer.
2. Создай класс Consumer.
3. В классе ShareItem должны быть созданы методы: toString(), equals(Object) и hashCode().
4. Метод run() класса Producer должен быть реализован согласно условию задачи.
5. Метод run() класса Consumer должен быть реализован согласно условию задачи.
6. Вывод должен совпадать с файлом output.txt.
*/