-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
110 lines (84 loc) · 3.38 KB
/
Solution.java
File metadata and controls
110 lines (84 loc) · 3.38 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
//Therefore you now have sorrow, but I will see you again, and your heart will rejoice,
//and no one will take your joy away from you. (John 16:22)
package com.javarush.task.task16.task1622;
/*
Последовательные выполнения нитей
*/
public class Solution {
public volatile static int COUNT = 4;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < COUNT; i++) {
new SleepingThread().join();
//напишите тут ваш код
}
}
public static class SleepingThread extends Thread {
private static volatile int threadCount = 0;
private volatile int countDownIndex = COUNT;
public SleepingThread() {
super(String.valueOf(++threadCount));
start();
}
public void run() {
while (true) {
System.out.println(this);
if (--countDownIndex == 0) return;
try {//напишите тут ваш код
Thread.sleep(10);
}catch(Exception e) {System.out.println("Нить прервана");}
}
}
public String toString() {
return "#" + getName() + ": " + countDownIndex;
}
}
}
/*
Последовательные выполнения нитей
1. В методе run после всех действий поставь задержку в 10 миллисекунд. Выведи «Нить прервана«, если нить будет прервана.
2. Сделай так, чтобы все нити выполнялись последовательно: сначала для нити №1 отсчет с COUNT до 1, потом для нити №2 с COUNT до 1 и т.д.
Пример:
#1: 4
#1: 3
...
#1: 1
#2: 4
...
Требования:
1. Программа должна создавать 4 объекта типа SleepingThread.
2. Метод main должен вызвать join у каждой создаваемой SleepingThread нити.
3. Метод run должен использовать Thread.sleep(10).
4. Вывод программы должен соответствовать условию.
5. Если нить SleepingThread прерывается, она должна вывести сообщение "Нить прервана".
package com.javarush.task.task16.task1622;
*
Последовательные выполнения нитей
*
public class Solution {
public volatile static int COUNT = 4;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < COUNT; i++) {
new SleepingThread();
//напишите тут ваш код
}
}
public static class SleepingThread extends Thread {
private static volatile int threadCount = 0;
private volatile int countDownIndex = COUNT;
public SleepingThread() {
super(String.valueOf(++threadCount));
start();
}
public void run() {
while (true) {
System.out.println(this);
if (--countDownIndex == 0) return;
//напишите тут ваш код
}
}
public String toString() {
return "#" + getName() + ": " + countDownIndex;
}
}
}
*/