бесконечные темы Java - PullRequest
       5

бесконечные темы Java

0 голосов
/ 28 ноября 2011

Мне нужен поток, который проверяет наличие сетевого подключения в настольном приложении JAVA. Я получил нить, как это

    class DataSyncThread extends Thread {
     DataSyncThread() {
     }

     public void run() {
         while(true){
            try{
                System.out.println("Checking for network");
                InetAddress addr = InetAddress.getByName(host);
                if(addr.isReachable(MIN_PRIORITY)){
                    syncData();
                }
                this.sleep(1000000);
            }catch(Exception e){}
         }
     }
 }

Теперь, когда я вызываю это в конструкторе, приложение никогда не загружается. когда я смотрю в консоль (я запускаю флягу для загрузки с нее), поток работает, в консоли выводится «Проверка сети».

помощь оценена

1 Ответ

9 голосов
/ 28 ноября 2011

Я предполагаю, что вы делаете что-то вроде:

DataSyncThread thread = new DataSyncThread();
thread.run();

Это будет запускать метод run() синхронно . Вы должны звонить start(), чтобы создать отдельный поток выполнения:

DataSyncThread thread = new DataSyncThread();
thread.start();

Я бы также порекомендовал реализовать Runnable вместо расширения Thread - или вполне возможно использовать Timer вместо этого, учитывая, что вы хотите периодическое выполнение. Я надеюсь, что ваш реальный код также входит в ваш блок catch ...

...