SHARE
TWEET

Untitled

a guest Nov 14th, 2017 54 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.javarush.task.task16.task1622;
  2.  
  3. /*
  4. Последовательные выполнения нитей
  5. 1. В методе run после всех действий поставь задержку в 10 миллисекунд. Выведи «Нить прервана«, если нить будет прервана.
  6. 2. Сделай так, чтобы все нити выполнялись последовательно: сначала для нити №1 отсчет с COUNT до 1, потом для нити №2 с COUNT до 1 и т.д.
  7.  
  8. Пример:
  9. #1: 4
  10. #1: 3
  11. ...
  12. #1: 1
  13. #2: 4
  14. ...
  15.  
  16.  
  17. Требования:
  18. 1. Программа должна создавать 4 объекта типа SleepingThread.
  19. 2. Метод main должен вызвать join у каждой создаваемой SleepingThread нити.
  20. 3. Метод run должен использовать Thread.sleep(10).
  21. 4. Вывод программы должен соответствовать условию.
  22. 5. Если нить SleepingThread прерывается, она должна вывести сообщение "Нить прервана".
  23. */
  24.  
  25. public class Solution {
  26.     public volatile static int COUNT = 4;
  27.  
  28.     public static void main(String[] args) throws InterruptedException {
  29.         for (int i = 0; i < COUNT; i++) {
  30.             new SleepingThread().join();
  31.             // Thread.currentThread().join();
  32.             //напишите тут ваш код
  33.         }
  34.     }
  35.  
  36.     public static class SleepingThread extends Thread {
  37.         private static volatile int threadCount = 0;
  38.         private volatile int countDownIndex = COUNT;
  39.  
  40.         public SleepingThread() {
  41.             super(String.valueOf(++threadCount));
  42.             start();
  43.         }
  44.  
  45.         public void run() {
  46.             while (true) {
  47.  
  48.                 try {
  49.                     System.out.println(this);
  50.                     if (--countDownIndex == 0)
  51.  
  52.                         return;
  53.                     Thread.sleep(10);
  54.                 } catch (InterruptedException e) {
  55.                     System.out.println("Нить прервана");
  56.  
  57.                 }
  58.  
  59.                 //напишите тут ваш код
  60.             }
  61.         }
  62.  
  63.         public String toString() {
  64.             return "#" + getName() + ": " + countDownIndex;
  65.         }
  66.     }
  67. }
RAW Paste Data
Top