package ru.job4j.threads;

/**
 * class WordsAndSpacesCounter - считает слова и пробелы в тексте.
 */
public class WordsAndSpacesCounter implements Runnable {
    /**
     * Текст.
     */
    private String text;
    /**
     * Маркер, что считать.
     */
    private String whatToCount;


    /**
     * Конструктор.
     * @param text текст.
     * @param whatToCount маркер, что считать.
     */
    public WordsAndSpacesCounter(String text, String whatToCount) {
        this.text = text;
        this.whatToCount = whatToCount;
    }

    @Override
    public void run() {
            if (this.whatToCount.equals("Spaces")) {
                char[] spaces = text.toCharArray();
                int count = 0;
                for (Character character : spaces) {
                    if (character == ' ') {
                        count++;
                    }
                }
                System.out.println(count);
            } else if (this.whatToCount.equals("Words")) {
                String trim = text.trim();
                if (trim.isEmpty()) {
                    System.out.println(0);
                } else {
                    String[] words = trim.split("\\s+");
                    System.out.println(words.length);
                }
            }
        }

      /**
     * Основной метод для демонстрации нескольких потоков.
     * @param args аругменты.
     */
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();
        builder.append("Кадзуо Исигуро родился в 1954 году в Нагасаки.");
        builder.append(" В 1960 году его семья переехала в Великобританию. Исигуро написал семь романов.");
        builder.append(" Его «Остаток дня» (1989 год) был удостоен Букеровской премии и экранизирован.");
        builder.append(" Все романы Исигуро, включая «Погребенного великана», переведены на русский язык.");

        Thread threadWords = new Thread(new WordsAndSpacesCounter(builder.toString(), "Words"));
        Thread threadSpaces = new Thread(new WordsAndSpacesCounter(builder.toString(), "Spaces"));
        System.out.println("Start");
        try {
            threadSpaces.start();
            threadSpaces.join(2000);
            threadWords.start();
            threadWords.join();
        } catch (InterruptedException iee) {
            System.out.println("Interrupt");
        }

        System.out.println("Finish");

    }


}

@@ -622,24 +622,89 @@
 Spaces%22)) %7B%0A
+                try%7B%0A                    Thread.sleep(3000);%0A    
             
@@ -759,16 +759,20 @@
         
+  
+  
 int coun
@@ -778,16 +778,20 @@
 nt = 0;%0A
+    
         
@@ -851,24 +851,28 @@
             
+ 
+   
 if (characte
@@ -879,24 +879,28 @@
 r == ' ') %7B%0A
+    
             
@@ -932,34 +932,42 @@
                 
-%7D%0A
+    %7D%0A    
                 
@@ -976,32 +976,36 @@
                 
+    
 System.out.print
@@ -1015,16 +1015,159 @@
 count);%0A
+                %7D catch (InterruptedException ie) %7B%0A                    System.out.println(%22Interrupted in run() method!%22);%0A                %7D%0A%0A
         
@@ -1501,32 +1501,33 @@
 %7D%0A            %7D%0A
+%0A
         %7D%0A%0A     
@@ -2316,24 +2316,99 @@
 %22Spaces%22));%0A
+        long start = System.currentTimeMillis();%0A        long wait = 1000;%0A
         Syst
@@ -2472,32 +2472,81 @@
 Spaces.start();%0A
+            while (threadSpaces.isAlive()) %7B%0A    
             thre
@@ -2563,15 +2563,254 @@
 oin(
-2
+1
 000);%0A
+                if (System.currentTimeMillis() + start %3E wait && threadSpaces.isAlive()) %7B%0A                    System.out.println(%22Interrupting threadSpaces!%22);%0A                    threadSpaces.interrupt();%0A                %7D%0A            %7D%0A
     

task 1017