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.task1620;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /*
  7. Один для всех, все - для одного
  8. 1. Разберись, как работает программа.
  9. 1.1. Обрати внимание, что объект Water — один для всех нитей.
  10. 2. Реализуй метод ourInterruptMethod, чтобы он прерывал все нити из threads.
  11. 3. В методе run исправь значения переменных:
  12. 3.1. isCurrentThreadInterrupted — должна равняться значению метода isInterrupted у текущей нити.
  13. 3.2. threadName — должна равняться значению метода getName (реализовано в классе Thread) у текущей нити.
  14.  
  15. 1. Метод ourInterruptMethod должен прервать все нити из списка threads.
  16. 2. Метод run должен получать текущую нить с помощью Thread.currentThread.
  17. 3. Метод run должен использовать метод isInterrupted текущей нити.
  18. 4. Метод run должен использовать метод getName текущей нити.
  19. 5. Метод main должен работать примерно 3 сек.
  20. */
  21.  
  22. public class Solution {
  23.     public static byte countThreads = 3;
  24.     static List<Thread> threads = new ArrayList<Thread>(countThreads);
  25.  
  26.     public static void main(String[] args) throws InterruptedException {
  27.         initThreadsAndStart();
  28.         Thread.sleep(3000);
  29.         ourInterruptMethod();
  30.     }
  31.  
  32.     public static void ourInterruptMethod() {
  33.  
  34.         for(Thread th:threads)
  35.         {
  36.             th.interrupt();//add your code here - добавь код тут
  37.         }
  38.     }
  39.  
  40.     private static void initThreadsAndStart() {
  41.         Water water = new Water("water");
  42.         for (int i = 0; i < countThreads; i++) {
  43.             threads.add(new Thread(water, "#" + i));
  44.         }
  45.  
  46.         for (int i = 0; i < countThreads; i++) {
  47.             threads.get(i).start();
  48.         }
  49.     }
  50.  
  51.     public static class Water implements Runnable {
  52.         private String commonResource;
  53.  
  54.         public Water(String commonResource) {
  55.             this.commonResource = commonResource;
  56.         }
  57.  
  58.         public void run() {
  59.             //fix 2 variables - исправь 2 переменных
  60.  
  61.             boolean isCurrentThreadInterrupted = Thread.currentThread().isInterrupted();
  62.             String threadName = Thread.currentThread().getName();
  63.  
  64.             try {
  65.                 while (!isCurrentThreadInterrupted) {
  66.  
  67.                     System.out.println("Объект " + commonResource + ", нить " + threadName);
  68.                     Thread.sleep(1000);
  69.                 }
  70.             } catch (InterruptedException e) {
  71.             }
  72.         }
  73.     }
  74. }
RAW Paste Data
Top