无限线程java

时间:2011-11-28 05:56:03

标签: java thread-safety thread-sleep

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

帮助赞赏

1 个答案:

答案 0 :(得分:9)

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

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

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

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

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