0
我在tomcat下使用cron4j。
我開始一個servlet我該如何防止cron任務多次調度
doGet(){
...
S.start();
...
}
我如何將防止在啓動此定期任務不止一次,即使我再打電話給意外這個servlet的內部調度?
我在tomcat下使用cron4j。
我開始一個servlet我該如何防止cron任務多次調度
doGet(){
...
S.start();
...
}
我如何將防止在啓動此定期任務不止一次,即使我再打電話給意外這個servlet的內部調度?
如前所述,對於一次性初始化代碼,最好使用ServletContextListener
或Servlet.init()
方法。但是,如果您想要一個答案,如何從doGet()
只做一次,然後在servlet中聲明和實例變量int counter=0
。在第一次調用doGet()
時增加counter=1
。檢查計數器值,如果> 0,則不要再次初始化。您可以使用同步塊來增加值或將其聲明爲volatile,以使其更具花哨。
不要在doGet()中執行代碼。在servlet的init()方法或其他一些代碼路徑中只執行一次(例如spring startup) –
ok,所以servlet的構造函數僅在我啓動tomcat時運行,或者第一次調用servlet時運行?然後在tomcat重新啓動之前不會被調用。 –
看我的編輯。可能最好使用Servlet.init()方法。或者你可以使用[ServletContextListener](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html)。如果你使用spring,最好在ApplicationContext中配置它。 –