2016-08-14 16 views
1

これは私のApplicationクラスで終了しませんしかし、私が使用するときスプリングブートアプリケーションは、すべてのタスクが完了した後

System.exit(SpringApplication.exit(SpringApplication.run(Application.class、args ))));

アプリケーションが終了し、すべてのスレッドが強制終了されます。

そして、私が使用している場合 -

SpringApplication.run(Application.class、引数).closeを();

スレッドは、アプリケーションがこの言っても後に実行を継続 -

org.spring[email protected]6eda5c9:起動日[月8月15日午前4時42分02秒IST 2016];コンテキスト階層のルート 2016年8月15日04:42:05.390 INFO 36600 --- [メイン] o.s.j.e.a.AnnotationMBeanExporter:シャットダウン

の登録解除JMX-暴露豆そして私は手動でアプリケーションを強制終了する必要があります。アプリケーションはコード130で終了する

誰かが正常にアプリケーションをシャットダウンする方法を教えてもらえますか?

おかげ

答えて

0

まず第一には、あなたが適切ExecutorServiceを閉じていない、あなたのmultiThreadTestは次のようになります。

public void multiThreadTest() throws InterruptedException { 
    ThreadPoolExecutor readExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10); 
    List<String> files = listFiles(new File("/Users/admin/filesList"), new ArrayList<>()); 
    for (String file : files) { 
     readExecutor.execute(new FileParser(file)); 
    } 

    readExecutor.shutdown(); 
    readExecutor.awaitTermination(5, TimeUnit.MINUTES); // wait for tasks to complete 
    readExecutor.shutdownNow(); 
} 
+0

私のアプリケーションは、非常に長い期間のために実行されます。日もあるかもしれない。その場合、これを設定する方法 - readExecutor.awaitTermination(5、TimeUnit.MINUTES); – Razor

+0

'DAYS'時間単位を使用できます - ' readExecutor.awaitTermination(5、TimeUnit.DAYS) ' –

+0

時間を手動で指定する必要はありませんか? – Razor

関連する問題