如何在java中每10秒显示一次LOOP中的值

时间:2014-06-17 07:34:09

标签: java shell loops servlets while-loop

我有一个while循环,其中通过附加shell脚本的输出来构造JAVA String。

System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
refreshString = refreshString + s;
System.out.println(s);
}

此shell脚本需要2小时才能执行。有没有办法每隔10秒就可以获取一次字符串(当前字符串的快照)?我正在开发一个JAVA应用程序,我需要每隔10秒在浏览器上显示该字符串。(我通过使用自动页面刷新库来执行此操作。页面会自动刷新。)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
PrintWriter out = response.getWriter();
...
out.println(refreshString);

现在,每次页面刷新时,我的页面都必须显示当前的“refreshString”。

如果我的问题不明确,请告诉我。

3 个答案:

答案 0 :(得分:2)

怎么样......每隔十秒就会打印一下你的字符串,它不需要做太多改动!

long ini = System.currentTimeMillis();
while ((s = stdInput.readLine()) != null) {
    refreshString = refreshString + s;
    if(System.currentTimeMillis() - ini >= 10 * 1000){
        ini = System.currentTimeMillis();
        System.out.println(s);
    }
}
编辑:抱歉,你的意思是每十秒! 希望它有所帮助!

答案 1 :(得分:1)

您可以使用文件。您的脚本将输出写入文件。然后,只要调用该文件,您的servlet就会读取该文件。

答案 2 :(得分:0)

试试这个:

Thread thread = new Thread() {

    public void run() {
        while (true){
            try {
                Thread.sleep(10000);
                System.out.println(myString);
                myString = "";
            } catch (Exception e){}                
        }
    }
};

thread.start();        
for (int i=0; ; i++){
    myString += i;
    // Do other stuff
}