我需要有一个线程来检查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从中加载)时,线程工作,它在控制台中显示“正在检查网络”。

帮助赞赏

最佳答案

我的猜测是您正在执行以下操作:

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


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

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


考虑到要定期执行,我还建议实现Runnable而不是扩展Thread-或者很有可能使用Timer。我希望您的真实代码也已登录到catch块中...

10-04 20:14