1 - Интересует различие между этими прерываниями interrupt() - isInterrupt(), interrupted() - isInterrupted ??? 2 - Thread.currentThread() - что это (желательно очень простыми словами.)? ИИИИ.. что делают два прерывания в задаче? УСЛОВИЕ Один для всех, все - для одного 1. Разберись, как работает программа. 1.1. Обрати внимание, что объект Water - один для всех нитей. 2. Реализуй метод ourInterruptMethod, чтобы он прерывал все нити из threads. 3. В методе run исправь значения переменных: 3.1. isCurrentThreadInterrupted - должна равняться значению метода isInterrupted у текущей нити. 3.2. threadName - должна равняться значению метода getName (реализовано в классе Thread) у текущей нити. Требования: 1. Метод ourInterruptMethod должен прервать все нити из списка threads. 2. Метод run должен получать текущую нить с помощью Thread.currentThread. 3. Метод run должен использовать метод isInterrupted текущей нити. 4. Метод run должен использовать метод getName текущей нити. 5. Метод main должен работать примерно 3 сек. УСЛОВИЕ Решение:
package com.javarush.task.task16.task1620;

import java.util.ArrayList;
import java.util.List;

/*
Один для всех, все - для одного
*/

public class Solution {
    public static byte threadCount = 3;
    static List<Thread> threads = new ArrayList<Thread>(threadCount);

    public static void main(String[] args) throws InterruptedException {
        initThreadsAndStart();
        Thread.sleep(3000);
        ourInterruptMethod();
    }

    public static void ourInterruptMethod() {
        //add your code here - добавь код тут
        for (Thread cell : threads){
            cell.interrupt();//<---ЧТО ЗДЕСЬ
        }
    }

    private static void initThreadsAndStart() {
        Water water = new Water("water");
        for (int i = 0; i < threadCount; i++) {
            threads.add(new Thread(water, "#" + i));
        }

        for (int i = 0; i < threadCount; i++) {
            threads.get(i).start();
        }
    }

    public static class Water implements Runnable {
        private String sharedResource;

        public Water(String sharedResource) {
            this.sharedResource = sharedResource;
        }

        public void run() {
            //fix 2 variables - исправь 2 переменных
            boolean isCurrentThreadInterrupted = false;
            String threadName = Thread.currentThread().getName();

            try {
                while (!isCurrentThreadInterrupted) {

                    System.out.println("Объект " + sharedResource + ", нить " + threadName);
                    Thread.sleep(1000);
                    Thread.currentThread().isInterrupted(); //<---ЧТО ЗДЕСЬ
                }
            } catch (InterruptedException e) {
            }
        }
    }
}