3

新しいファイルをアップロードするために 2 分ごとに FTP にアクセスします。java.util.Timer で実装しました。しかし、しばらくすると (数日または 1 週間後)、例外も理由もなく停止します。

スレッドが見つかりました: Java 無制限スレッドはしばらくすると停止します

しかし、それには特別な解決策はありません。ScheduledExecutorService について読みましたが、私が理解している限りでは、Timer と同じです。

アイデアをください!

4

2 に答える 2

0

メイン スレッドで APIを使用してデフォルトの例外ハンドラーを設定し、Thread.setDefaultUncaughtExceptionHandler()黙って飲み込まれる可能性のあるスロー可能な/例外をログに記録することを試みることができます。

于 2013-02-01T13:34:56.317 に答える
0

おそらくこれが重複しているため、誰もこの質問に答えていないことがわかりました。

ScheduledExecutorService は を使用しSystem.nanotime()、Java.util.Timer は を使用しますSystem.currentTimeMillis()

System.currentTimeMillis()システム時間に依存し、System.nanotime()固定された任意の初期時間からナノ秒を提供し、システム時間とは関係ありません。そのため、システム時刻の変更 (NTP 時刻の修正またはシステム スタンバイによる) は、Timer の実行に影響する場合と影響しない場合があります。これが、タイマーが失敗する理由です。

詳細については、「クロックが変更された場合、Timertask.scheduleAtFixedRate は何をすべきか?」を参照してください。

于 2014-10-09T13:02:41.953 に答える