Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > не работает таймер


Автор: JohnTravolta 2.9.2010, 18:05
Код

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

public class t {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Timer timer;
         timer = new Timer(1000, new ActionListener()
          {
              public void actionPerformed(ActionEvent e)
              {
               System.out.println("WOW!");
              }
          } );
         timer.start();

    }

}

по-идее должно каждую секунду выводить WOW!
подскажите что не так?

Автор: Samotnik 2.9.2010, 19:26
 smile  чё ?
Что Вы пытаетесь сделать ? 

Автор: jk1 2.9.2010, 22:44
JohnTravolta,  таймеры выполняют ожидание в отдельном потоке-демоне. Это означает, что что если ни один другой поток не выполняется, то исполнение программы будет завершено.
Чтобы все работало так, как ожидается, подвесьте основной поток:
Код

 public static void main(String[] args) throws InterruptedException {
        Timer timer;
         timer = new Timer(1000, new ActionListener()
          {
              public void actionPerformed(ActionEvent e)
              {
               System.out.println("WOW!");
              }
          } );
         timer.start();
         Thread.sleep(10000000);
    }
 
В настоящих SWING-приложениях роль основного потока играет EDT, который осуществляет отрисовку и распределение событий и не завершается до тех пор, пока есть открытые фреймы и диалоги.

Автор: JohnTravolta 2.9.2010, 23:45
спасибо. 
я планировал запустить таймер в сервлете чтобы он каждые 100мс отправлял информацию клиенту.
так можно делать?
то есть у меня ряд пробелов здесь и я не знаю как это лучше сделать.
мне посоветовали использовать сокет на флеше. 
скажите сокет должен быть и на сервере и на клиенте?
или можно на клиенте запустить сокет со слушателем, а на сервлете таймер и отправлять инфу? так можно делать?
то есть в теле таймера указать что-то типа 
Код

              writer = response.getWriter();
              writer.println(xmlResponse);
              writer.close();


Автор: mstalker26 3.9.2010, 08:54
Код похоже взят из http://base.vingrad.ru/view/107-Kak-v-Java-rabotat-s-taymerom, по крайней мере очень похож.

Автор: Skipy 3.9.2010, 09:18
Цитата(JohnTravolta @ 2.9.2010,  23:45)
мне посоветовали использовать сокет на флеше. 
скажите сокет должен быть и на сервере и на клиенте?
или можно на клиенте запустить сокет со слушателем, а на сервлете таймер и отправлять инфу? так можно делать?

А как Вы собираетесь, во-первых, пройти через прокси, за которым, возможно, сидит клиент, во-вторых - обойти файрвол и антивирус, которые у меня, например, не дадут никакому флешу открыть сокет, а тем более - кому-то коннектиться ко мне. А с NAT Вы что делать будете? А с внутренними сетями? Я, например, что дома, что на работе, - сижу в сети 10.х.х.х. А дома - еще и 192.168.х.х за маршрутизатором. Вы какой адрес для соединения указывать будете?

В общем, про открытие сокета флешом можете смело забыть, имхо. При нормально сконфигурированной сети и безопасности это не будет работать.

Вы исходную задачу лучше опишите. Что Вы хотите передавать и для чего.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)