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か、代わりに a を使用することをお勧めします。Timerあなたの実際のコードもあなたの catch ブロックにログインしていることを願っています...

于 2011-11-28T05:59:23.673 に答える