java wait() notify() вывести разговор по порядку
package com.company;
public class Main {
private static final String[] king =
{"Вызывает антирес\nВаш технический прогресс:\nКак у вас там сеют брюкву —\nС кожурою али без?..",
"Вызывает антирес\nВаш питательный процесс:\nКак у вас там пьют какаву —\nС сахарином али без?..",
"Вызывает антирес\nИ такой ишо разрез:\nКак у вас там ходют бабы —\nВ панталонах али без?",
"Ты опять в свою дуду?\nСдам в тюрьму, имей в виду!\nЯ ж не просто балабоню,\nЯ ж политику веду!\nДевка эвон подросла,\nА тоща, как полвесла!\nВот и мыслю, как бы выдать\nНашу кралю за посла!\nТолько надо пользы для\nЗавлекать его не зля —\nДелать тонкие намеки\nНевсурьез и издаля."};
private static final String[] nanny =
{"Постеснялся хоть посла б!..\nАль совсем башкой ослаб?..\nГде бы что ни говорили —\nВсе одно сведет на баб!",
"Да за энтого посла\nДаже я бы не пошла,--\nТак и зыркает, подлюка,\nЧто бы стибрить со стола!\nОн тебе все \"Йес\" да \"йес\",\nА меж тем все ест да ест.\nОтвернись — он пол-Расеи\nЗаглотнет в один присест!"};
public static void main(String[] args) {
Object sync = new Object();
new Thread(() -> {
synchronized (sync) {
try {
for (int i = 0; i < 4; i++) {
sync.notify();
if (i == 2) {
new Thread(() -> {
synchronized (sync) {
for (int j = 0; j < 2; j++) {
sync.notify();
System.out.println("Нянька:\n" + nanny[j] + "\n");
try {
sync.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
System.out.println("Царь:\n" + king[i] + "\n");
sync.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(() -> {
synchronized (sync) {
for (int i = 0; i < 3; i++) {
sync.notify();
System.out.println("Посол:\nЙес!" + "\n");
try {
sync.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
Программа используя 3 или более потоков должна вывести разговор:
Царь
Вызывает антирес
Ваш технический прогресс:
Как у вас там сеют брюкву —
С кожурою али без?..
Посол
Йес!
Царь
Вызывает антирес
Ваш питательный процесс:
Как у вас там пьют какаву —
С сахарином али без?..
Посол
Йес!
Царь
Вызывает антирес
И такой ишо разрез:
Как у вас там ходют бабы —
В панталонах али без?
Посол
Йес!
Нянька
Постеснялся хоть посла б!..
Аль совсем башкой ослаб?..
Где бы что ни говорили —
Все одно сведет на баб!
Царь
Ты опять в свою дуду?
Сдам в тюрьму, имей в виду!
Я ж не просто балабоню,
Я ж политику веду!
Девка эвон подросла,
А тоща, как полвесла!
Вот и мыслю, как бы выдать
Нашу кралю за посла!
Только надо пользы для
Завлекать его не зля —
Делать тонкие намеки
Невсурьез и издаля.
Нянька
Да за энтого посла
Даже я бы не пошла,--
Так и зыркает, подлюка,
Что бы стибрить со стола!
Он тебе все "Йес" да "йес",
А меж тем все ест да ест.
Отвернись — он пол-Расеи
Заглотнет в один присест!
Но в результате получаю:
Царь:
Вызывает антирес
Ваш технический прогресс:
Как у вас там сеют брюкву —
С кожурою али без?..
Посол:
Йес!
Царь:
Вызывает антирес
Ваш питательный процесс:
Как у вас там пьют какаву —
С сахарином али без?..
Посол:
Йес!
Царь:
Вызывает антирес
И такой ишо разрез:
Как у вас там ходют бабы —
В панталонах али без?
Посол:
Йес!
Царь:
Ты опять в свою дуду?
Сдам в тюрьму, имей в виду!
Я ж не просто балабоню,
Я ж политику веду!
Девка эвон подросла,
А тоща, как полвесла!
Вот и мыслю, как бы выдать
Нашу кралю за посла!
Только надо пользы для
Завлекать его не зля —
Делать тонкие намеки
Невсурьез и издаля.
Нянька:
Постеснялся хоть посла б!..
Аль совсем башкой ослаб?..
Где бы что ни говорили —
Все одно сведет на баб!