2017-03-02 24 views
1

ScheduledExecutorServiceを使用して、1分ごとに以下のコードが実行中であると仮定します。Java - ScheduledExecutorServiceを正しく停止する方法

このジョブはstartBatch.shファイルによってトリガーされます。

public class TestScheduledExecutorService { 
    public static void main (String a[]) { 
     ScheduledExecutorService service = null; 
     try { 
      TestObject runnableBatch = new TestObject() { 
       int i = 0; 
       @Override 
       public void run() { 
        testMethod (++i); 
       } 
      }; 
      service = Executors.newSingleThreadScheduledExecutor(); 
      service.scheduleAtFixedRate(runnableBatch, 0, 20, TimeUnit.SECONDS); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

問題が存在する場合、ライブ後にこのデーモンプロセスを正しく停止する方法はありますか。

答えて

1

あなたが停止するサービスを伝えるために、「何とか」呼び出すことができるメソッドを追加することを検討する必要があります。たとえば、あなたの "サービス"は、あるポートでリッスンし、そこからコマンドを受け取ることができます。

はい、それはかなり幅広いですが、ので、あなたの入力質問があります。

あなたのコメントが与えられました:コマンドを聞くのはです。オプションはこちらです。それは本当にあなたの要件に依存します。ポートである必要はありません。ファイルウォッチャーサービスを使用して、ディレクトリ内に作成されたファイルなどを確認するだけです。あなたが必要とするのは:チャンネルユーザーがあなたのサーバーと通信するために使用できるものです。そのチャンネルの様子あなた次第。

これは、サービスを作成するときの要点です。要件を直接取得し、それを満たすソリューションを設計する必要があります。

+0

Not GhostCat、プロセスを停止する唯一の方法は、リスニングポートを正しく使用して殺すことです。 – DEADEND

+0

ありがとう&注目GhostCat。 @ GhostCat。 – DEADEND

+0

すばらしいです。もう一度ありがとうございます。 – DEADEND

関連する問題