/**
         * Stop the thread if the thread can bring back to runnable state , and the
         * program will go to next loop. Note: this may not work, in some case. For
         * example, the thread is block in some reason (Locking, blocking queue...),
         * the thread is waked up , but it sleep or blocked again, and never reach
         * the next loop in the while loop.
         */
public synchronized void stop() {
		task = null; // set the flag and while loop in the run() will exit
		i = 0;
		notify(); // try to wake up the thread which associate this object
	}
public synchronized void stop() {
task = null; // set the flag and while loop in the run() will exit
i = 0;
notify(); // try to wake up the thread which associate this object
}
public synchronized void stop() {
task = null; // set the flag and while loop in the run() will exit
i = 0;
notify(); // try to wake up the thread which associate this object
}
public synchronized void stop() {
task = null; // set the flag and while loop in the run() will exit
i = 0;
notify(); // try to wake up the thread which associate this object
}