public class Solution {
public static int delay = 1000;
public static void main(String[] args) {
Thread violin = new Thread(new Violin("Player"));
violin.start();
}
public static void sleepNSeconds(int n) {
try {
Thread.sleep(n * delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public interface MusicalInstrument extends Runnable {
Date startPlaying();
Date stopPlaying();
}
public static class Violin implements MusicalInstrument {
private String owner;
public Violin(String owner) {
this.owner = owner;
}
public Date startPlaying() {
System.out.println(this.owner + " is starting to play");
return new Date();
}
public Date stopPlaying() {
System.out.println(this.owner + " is stopping playing");
return new Date();
}
@Override
public void run() {
startPlaying();
long start = startPlaying().getTime();
sleepNSeconds(1);
stopPlaying();
long stop = stopPlaying().getTime();
System.out.println("Playing " + (stop - start) + " ms");
}
}
}
Вывод:
Player is starting to play
Player is starting to play
Player is stopping playing
Player is stopping playing
Playing 1015 ms
Hello
17 уровень
Почему вызывается два раза?
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
19 октября 2021, 06:15
+2
Hello
19 октября 2021, 06:18
спасибо
0