package com.javarush.test.level16.lesson05.task05; /* Расставь вызовы методов join() 1. Разберитесь, что делает программа. 2. Расставь вызовы методов join() так, чтобы для каждой кошки выполнялось следующее: 2.1. Сначала кошка рожает котят. 2.2. Потом все котята вылазят из корзинки в произвольном порядке. 2.3. В конце кошка собирает их назад в корзинку. 2.4. Все события для одной кошки могут быть перемешаны с событями для другой кошки. 2.5. Добавить сон котят (200 мс) в investigateWorld */ public class Solution { public static void main(String[] args) throws InterruptedException { Cat cat1 = new Cat("Мурка"); Cat cat2 = new Cat("Пушинка"); } public static class Cat extends Thread { protected Kitten kitten1; protected Kitten kitten2; public Cat(String name) throws InterruptedException { super(name); kitten1 = new Kitten("Котенок 1, мама - " + getName()); kitten2 = new Kitten("Котенок 2, мама - " + getName()); start(); } public void run() { System.out.println(getName() + " родила 2 котенка"); try { initAllKitten(); } catch (InterruptedException e) { } System.out.println(getName() + ": Все котята в корзинке. " + getName() + " собрала их назад"); } private void initAllKitten() throws InterruptedException { kitten1.start(); kitten1.join(); kitten2.start(); kitten2.join(); } } public static class Kitten extends Thread { public Kitten(String name) { super(name); } public void run() { System.out.println(getName() + ", вылез из корзинки"); try { investigateWorld(); } catch (InterruptedException e) { e.printStackTrace(); } } } private static void investigateWorld() throws InterruptedException { Thread.sleep(200); } }
Leave A Comment