У меня есть цикл while, в котором он строит строку JAVA, добавляя вывод из сценария оболочки.
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
refreshString = refreshString + s;
System.out.println(s);
}
Этот сценарий оболочки выполняет 2 часа для выполнения. Есть ли способ, с помощью которого я могу захватить строку каждые 10 секунд (Снимок текущей строки)? Я разрабатываю приложение JAVA, где мне нужно отображать эту строку в браузере каждые 10 секунд. (Я делаю это с помощью Auto Page Refresh Library. Эта страница автоматически обновляется.)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
PrintWriter out = response.getWriter();
...
out.println(refreshString);
Теперь моя страница должна отображать текущую "refreshString" каждый раз, когда страница обновляется.
Просто дайте мне знать, если мой вопрос не ясен.
Вы можете использовать файл. Ваш скрипт записывает вывод в файл. Затем ваш сервлет читает этот файл всякий раз, когда он вызывается.
Как насчет... Каждые десять секунд он будет печатать вашу строку, и ей не нужно много изменений!
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);
}
}
отредактирован: извините, вы имели в виду каждые десять секунд! Надеюсь, поможет!
Попробуй это:
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
}