我需要有一个线程来检查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块中...