スローデーモンスレッドを読んだ後、私の要件に従って実装すると、いくつかの疑問が生じました。私を明確にしてください
unitl JVM出口を実行する必要があるデーモンスレッドを呼び出すために、ServletContextListenerクラスを使用しています
public void contextInitialized (ServletContextEvent event) { context = event.getServletContext(); //getting from spring context MyServiceManager serviceManager = (MyServiceManager) ctx.getBean("myServiceManager"); serviceManager.setDaemon(true); serviceManager.start(); }
ServiceManagerクラスで、JVMが存在するまでプログラムfoeverを実行するために無限ループを実行しています
public void run() { try { startService(); } catch (Exception e) { logger.error("Error Occured in Background Process Runner"); } } private void startService(){ while(true){ try{ //invoke some new threads and do processing jobs until server/jvm stops }catch(Exception e) { //log but don't quit } } } }
懸念されるのは、上記の実装を使用したデーモンスレッドが実行されるかどうかです。そうでない場合、私は自分の仕事を達成するために何をすべきですか。JVMが停止しない(サーバーが停止している)場合を除いて、終了しないように指示します。
注:私はこの投稿をフォーマットするために自分のレベルを最大限に試しています。しかし、今日何かが起こっています、それはフォーマットされていません:(