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