Guest User

Untitled

a guest
Apr 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. package com.javarush.task.task16.task1605;
  2.  
  3. import java.util.Date;
  4.  
  5. /*
  6. Поговорим о музыке
  7. 1. Измени класс Violin так, чтоб он стал таском для нити. Используй интерфейс MusicalInstrument
  8. 2. Реализуй необходимый метод в нити Violin. Реализация должна быть следующей:
  9. 2.1. Считай время начала игры - метод startPlaying().
  10. 2.2. Подожди 1 секунду - метод sleepNSeconds(int n), где n - количество секунд.
  11. 2.3. Считай время окончания игры - метод stopPlaying().
  12. 2.4. Выведи на консоль продолжительность игры в миллисекундах. Используй методы из пунктов 2.1 и 2.3.
  13.  
  14. Пример "Playing 1002 ms".
  15. */
  16.  
  17. public class Solution {
  18. public static int delay = 1000;
  19.  
  20. public static void main(String[] args) {
  21. Thread violin = new Thread(new Violin("Player"));
  22. violin.start();
  23. }
  24.  
  25. public static void sleepNSeconds(int n) {
  26. try {
  27. Thread.sleep(n * delay);
  28. } catch (InterruptedException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32.  
  33. public interface MusicalInstrument extends Runnable {
  34. Date startPlaying();
  35.  
  36. Date stopPlaying();
  37. }
  38.  
  39. public static class Violin implements MusicalInstrument {
  40. private String owner;
  41.  
  42. public Violin(String owner) {
  43. this.owner = owner;
  44. }
  45.  
  46. public Date startPlaying() {
  47. System.out.println(this.owner + " starts playing");
  48. return new Date();
  49. }
  50.  
  51. public Date stopPlaying() {
  52. System.out.println(this.owner + " stops playing");
  53. return new Date();
  54. }
  55.  
  56. @Override
  57. public void run() {
  58. long start = startPlaying().getTime();
  59. sleepNSeconds(1);
  60. long stop = stopPlaying().getTime();
  61. System.out.println("Playing " + (stop - start) + " ms");
  62. }
  63. }
  64. }
  65. /*Требования:
  66. 1. Класс Violin не должен быть унаследован от какого-либо дополнительного класса.
  67. 2. Класс Violin должен реализовывать интерфейс MusicalInstrument.
  68. 3. Метод run класса Violin должен вызывать метод startPlaying.
  69. 4. Метод run класса Violin должен вызывать метод sleepNSeconds с параметром 1 секунда.
  70. 5. Метод run класса Violin должен вызывать метод stopPlaying.
  71. 6. Метод run класса Violin должен выводить на консоль продолжительность игры в миллисекундах. Используй формат из примера.*/
Add Comment
Please, Sign In to add comment