這就是我的Servlet
。定期在瀏覽器上顯示消息
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Initializing...");
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Inside Thread!!!");
for(int i=1; i<5; i++){
System.out.println("Date: " + new Date());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
executorService.shutdown();
// Some more piece of code is there
}
我在這裏做什麼:
我創建了一個單獨的線程在日期越來越控制檯5 sec
後打印。
我想要做什麼:
當我運行這段代碼,我得到這個輸出打印到控制檯上:
Initializing...
Inside Thread!!!
Date : Sat Nov 01 15:57:57 GMT 2014
Date : Sat Nov 01 15:58:02 GMT 2014
Date : Sat Nov 01 15:58:07 GMT 2014
Date : Sat Nov 01 15:58:12 GMT 2014
我想相同的一組消息中要打印jsp
頁面,以便在5 sec
(通過在上述代碼中執行Syetem.out.println()
方法時執行的方法向瀏覽器發送多個響應)的間隔打印日期。
原因從服務器推送消息:
在上面的例子中,我在一個循環中進行打印簡單的消息。但在實際情況下,有一些計算,因此消息將在不同的時間範圍內可用(即不是每5秒鐘後,一些消息將在快速時間內可用,而其他消息可能需要更多時間)。因此,如果我從服務器推送,那麼只要有消息,我就可以推送消息。
無法理解:
我不知道如何將多個響應來自一個單獨的線程(即在上面的代碼ExecutorService
)發送到瀏覽器。我正在調查javascript
中存在的setInterval
方法,但並不是要如何使用它來構建此代碼。
我可以自由使用jQuery
或javascript
來完成這項工作。請指教。
在上面的例子中,我在循環中打印簡單的消息。但在實際情況下,有一些計算,因此消息將在不同的時間範圍內可用(即不是每5秒鐘後,一些消息將在快速時間內可用,而其他消息可能需要更多時間)。因此,如果我從服務器推送,那麼只要有消息,我就可以推送消息。請建議。 – user182944 2014-11-02 12:03:36