Как показать значения в цикле за каждые 10 секунд в Java

2

У меня есть цикл 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" каждый раз, когда страница обновляется.

Просто дайте мне знать, если мой вопрос не ясен.

  • 0
    Может быть, нам Thread.sleep ()?
  • 0
    Вы просите меня использовать темы? Как я могу получить снимок строки в цикле while с Threads?
Показать ещё 3 комментария
Теги:
servlets
loops
while-loop

3 ответа

1
Лучший ответ

Вы можете использовать файл. Ваш скрипт записывает вывод в файл. Затем ваш сервлет читает этот файл всякий раз, когда он вызывается.

  • 0
    Как вы думаете, возможно ли мне записать содержимое в файл и затем извлечь его оттуда одновременно?
  • 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);
    }
}

отредактирован: извините, вы имели в виду каждые десять секунд! Надеюсь, поможет!

  • 0
    System.out.println (s) печатает строку в консоли Tomcat. И то, что мне нужно, в точности похоже на это. Мне нужен мой браузер для отображения того, что отображает консоль Tomcat.
  • 0
    тогда вы должны хранить его в файле, memcached .. где угодно! Таким образом, вы можете прочитать эти сохраненные данные и распечатать их на своей веб-странице каждый раз, когда клиент спрашивает.
Показать ещё 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
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню