отправить request в отдельном потоке, а в основном потоке в цикле while ждать, пока не будет готов response. Выглядит это так:
SendRequest th = new SendRequest(req);
th.start();
while (true)
{
if (th.responseReady())
{
System.out.println("id = " + th.getResponse().get(ADVField.DATA));
break;
}
}
И это не работает. То есть, в потоке SendRequest я получаю response и вывожу информацию об этом в консоль, но цикл while в основном потоке не прекращает свою работу и программа впадает в бесконечный цикл. Вроде все очевидно - метод th.responseReady() работает не правильно.. вот только следующий код работает прекрасно:
SendRequest th = new SendRequest(req);
th.start();
while (true)
{
System.out.println("+");
if (th.responseReady())
{
System.out.println("id = " + th.getResponse().get(ADVField.DATA));
break;
}
}
Что изменилось? Я просто добавил вывод в консоль на каждой итерации цикла. Что за мэджик?) Есть у кого мысли?
Решил проблему добавление маркера synchronized для методов th.responseReady() и th.getResponse() :)
Обсуждают сегодня