This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I am having a problem using Timer and the underlaying TimerThread class.
I'm using a Timer to schedule a routine testing class that runs once every day to test output of the server. The timer is started from a JSP page and can be stopped from the same page.
The problems I'm facing are:
1. When I append the stop=1 as parameter to my JSP URL, the instance of Task class is not the same as the Task instance when I start the timer. Therefore I cannot stop the timer using this method.
2. I can iterate through the Thread in the server to find the underlaying TimerThread invoke by the Timer class. But there is no way to cast it to either Task or Timer class in order to stop the timer. TimerThread is an inner class in Timer, and there's no way for me to set the variables within this class.
3. Is it okay to stop the thread using thread.stop() since I cannot get the class instance to use the volatile variable method.
Currently, I'm considering stopping it using thread.stop() but since this method is deprecated and unsafe, is there any other safer and better methods to use?
Every time you accesses the JSP it will create a new instance of the "TaskTimer" class so you don't have access to the one(s) created previously. In order to have one and only one instance you may need to look for the Singleton Pattern