Guest User

Untitled

a guest
Nov 14th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment