-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
174 lines (135 loc) · 5.26 KB
/
Solution.java
File metadata and controls
174 lines (135 loc) · 5.26 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//You will also testify, because you have been with me from the beginning. (John 15:27)
package com.javarush.task.task16.task1612;
//You will also testify, because you have been with me from the beginning. (John 15:27)
/*
Stopwatch (Секундомер)
*/
public class Solution {
public static volatile boolean isStopped = false;
public static void main(String[] args) throws InterruptedException {
Runner ivanov = new Runner("Ivanov", 4);
Runner petrov = new Runner("Petrov", 2);
//на старт!
//внимание!
//марш!
ivanov.start();
petrov.start();
Thread.sleep(2000);
isStopped = true;
Thread.sleep(1000);
}
public static class Stopwatch extends Thread {
private Runner owner;
private int stepNumber;
public Stopwatch(Runner runner) {
this.owner = runner;
}
public void run() {
try {
while (!isStopped) {
doStep();
}
} catch (InterruptedException e) {
}
}
private void doStep() throws InterruptedException {
stepNumber++;
Thread.sleep(1000/owner.getSpeed());//add your code here - добавь код тут
System.out.println(owner.getName() + " делает шаг №" + stepNumber + "!");
}
}
public static class Runner {
Stopwatch stopwatch;
private String name;
private int speed;
public Runner(String name, int speed) {
this.name = name;
this.speed = speed;
this.stopwatch = new Stopwatch(this);
}
public String getName() {
return name;
}
public int getSpeed() {
return speed;
}
public void start() {
stopwatch.start();
}
}
}
/*
Stopwatch (Секундомер)
1. Разберись, что делает программа.
2. Реализуй логику метода doStep так, чтобы учитывалась скорость бегуна.
2.1. Метод getSpeed() в классе Runner показывает, сколько шагов в секунду делает бегун.
Нужно, чтобы бегун действительно делал заданное количество шагов в секунду.
Если Иванов делает 4 шага в секунду, то за 2 секунды он сделает 8 шагов.
Если Петров делает 2 шага в секунду, то за 2 секунды он сделает 4 шага.
2.2. Метод sleep в классе Thread принимает параметр типа long.
ВАЖНО! Используй метод Thread.sleep(), а не Stopwatch.sleep().
Требования:
1. Метод getSpeed должен возвращать int.
2. Поле speed класса Runner должно иметь тип int.
3. Конструктор класса Runner должен принимать String и int.
4. Метод doStep должен учитывать скорость бегуна. Если скорость бегуна 2 шага в секунду, метод должен работать пол секунды; если скорость бегуна 4 шага в секунду, метод должен работать четверть секунды.
5. Вывод программы должен отображать сколько шагов сделали Иванов и Петров за 2 секунды.
package com.javarush.task.task16.task1612;
*
Stopwatch (Секундомер)
*
public class Solution {
public static volatile boolean isStopped = false;
public static void main(String[] args) throws InterruptedException {
Runner ivanov = new Runner("Ivanov", 4);
Runner petrov = new Runner("Petrov", 2);
//на старт!
//внимание!
//марш!
ivanov.start();
petrov.start();
Thread.sleep(2000);
isStopped = true;
Thread.sleep(1000);
}
public static class Stopwatch extends Thread {
private Runner owner;
private int stepNumber;
public Stopwatch(Runner runner) {
this.owner = runner;
}
public void run() {
try {
while (!isStopped) {
doStep();
}
} catch (InterruptedException e) {
}
}
private void doStep() throws InterruptedException {
stepNumber++;
//add your code here - добавь код тут
System.out.println(owner.getName() + " делает шаг №" + stepNumber + "!");
}
}
public static class Runner {
Stopwatch stopwatch;
private String name;
private int speed;
public Runner(String name, int speed) {
this.name = name;
this.speed = speed;
this.stopwatch = new Stopwatch(this);
}
public String getName() {
return name;
}
public int getSpeed() {
return speed;
}
public void start() {
stopwatch.start();
}
}
}
*/