//If I had not come and spoken to them, they would not have had sin; but now they have no excuse for their sin. (John 15:22) package com.javarush.task.task16.task1606; import java.util.ArrayList; import java.util.List; /* join: в нужное время в нужном месте */ public class Solution { public static void main(String[] args) throws InterruptedException { PrintListThread firstThread = new PrintListThread("firstThread"); PrintListThread secondThread = new PrintListThread("secondThread"); firstThread.start(); firstThread.join(); secondThread.start(); } public static void printList(List list, String threadName) { for (String item : list) { System.out.println(String.format("%s : %s", threadName, item)); } } public static List getList(int n) { List result = new ArrayList(); if (n < 1) return result; for (int i = 0; i < n; i++) { result.add(String.format("String %d", (i + 1))); } return result; } public static class PrintListThread extends Thread { public PrintListThread(String name) { super(name); } public void run() { printList(getList(20), getName()); } } } /* join: в нужное время в нужном месте Подумай, в каком месте и для какого объекта нужно вызвать метод join, чтобы результат выводился по-порядку сначала для firstThread, а потом для secondThread. Вызови метод join в нужном месте. Пример вывода: firstThread : String 1 firstThread : String 2 ... firstThread : String 19 firstThread : String 20 secondThread : String 1 ... secondThread : String 20 Требования: 1. Метод main должен вызывать метод join для объекта firstThread. 2. Метод main не должен вызывать метод join для объекта secondThread. 3. Метод main не должен вызывать System.out.println() или System.out.print(). 4. Вывод программы должен соответствовать примеру из задания. package com.javarush.task.task16.task1606; import java.util.ArrayList; import java.util.List; /* join: в нужное время в нужном месте */ public class Solution { public static void main(String[] args) throws InterruptedException { PrintListThread firstThread = new PrintListThread("firstThread"); PrintListThread secondThread = new PrintListThread("secondThread"); firstThread.start(); //firstThread.join(); secondThread.start(); } public static void printList(List list, String threadName) { for (String item : list) { System.out.println(String.format("%s : %s", threadName, item)); } } public static List getList(int n) { List result = new ArrayList(); if (n < 1) return result; for (int i = 0; i < n; i++) { result.add(String.format("String %d", (i + 1))); } return result; } public static class PrintListThread extends Thread { public PrintListThread(String name) { super(name); } public void run() { printList(getList(20), getName()); } } } */