2012-05-30 4 views
0

Я получаю сообщение запроса с веб-страницы HTML, чтобы выполнить предварительную обработку и отправить ответ на ui.приостановить текущий поток при выполнении в java

в сазе код выглядит следующим образом:

reqClientName= request.getParameter("clientname"); 
System.out.println(" agent"+clientName); 
reqMessage = request.getParameter("message"); 
System.out.println(" message"+message);    
jaf.initiateRequest(clientName,message); 
response.getWriter().println("Message Processed at Server (Echo Response) is"+getResponseMessage()); 

здесь jaf.initiateRequest занимает некоторое время, чтобы выполнить и даже до того, как выполнение завершено response.getWriter.println() запускается на выполнение, и это пуст.

Есть ли безопасный способ получения потока?

+0

Что такое 'jaf' и' getResponseMessage'? – assylias

+0

@assylias jaf - это объект, вызывающий метод, который выполняет некоторую обработку, и задает String responseMessage. Я пытаюсь получить доступ к этой строке, используя getter здесь. – bhavs

+0

Вам нужно сделать блокировку вызова 'initiateRequest' или' getResponseMessage'. Скорее, 'getResponseMessage'. Итак, независимо от того, что вы делаете асинхронно, вам нужно дождаться завершения в этом методе до его возвращения. – assylias

ответ

0

Попробуйте использовать CountDownLatch, с одновременной упаковки. Его резьба безопасна. Это даст вам возможность выполнить обработку, и после ее выполнения выполнить цель.

+0

Захват счетчика вниз действительно интересный, но я действительно не уверен, как долго мне нужно отсчитывать, я не хочу, чтобы код был коротким. – bhavs

+0

@bhavs Идея состоит в том, чтобы запускать защелку после получения ответа. – assylias

Смежные вопросы