0

我需要有一个线程来检查 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){}
         }
     }
 }

现在,当我在构造函数中调用它时,应用程序永远不会加载。当我查看控制台(我触发 jar 从中加载)线程工作时,它会在控制台中打印“检查网络”。

帮助表示赞赏

4

1 回答 1

9

我的猜测是你正在做类似的事情:

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

这将同步运行该run()方法。您应该调用创建一个单独的执行线程:start()

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

我还建议实施Runnable而不是扩展Thread- 或者很可能使用 aTimer代替,因为您想要定期执行。我希望您的真实代码也已登录您的 catch 块...

于 2011-11-28T05:59:23.673 回答