我需要一个线程来检查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从中加载)线程工作时,它会在控制台中打印“正在检查网络”。
帮助赞赏
答案 0 :(得分:9)
我的猜测是你正在做的事情:
DataSyncThread thread = new DataSyncThread();
thread.run();
这将同步运行run()
方法 。您应该调用start()
来创建一个单独的执行线程:
DataSyncThread thread = new DataSyncThread();
thread.start();
我还建议实施Runnable
而不是扩展Thread
- 或者很可能使用Timer
,因为您需要定期执行。我希望你的真实代码也登录你的catch块......