Language/Java
[Java] Timer , - start, stop, pause, Design Pattern(state)
퓨림노
2011. 10. 15. 22:33
g
import java.util.Timer;
import java.util.TimerTask;
class MyTask extends TimerTask {
int counter;
public MyTask() {
counter = 0;
}
public void run() {
counter++;
System.out.println("Ring " + counter);
}
public int getCount() {
return counter;
}
}
public class JTimer {
private boolean running;
private MyTask task;
private Timer timer;
public JTimer() {
timer = new Timer(true);
}
public boolean isRinging() {
return running;
}
public void startRinging() {
running = true;
task = new MyTask();
timer.scheduleAtFixedRate(task, 0, 3000);
}
public void reStart()
{
timer = new Timer();
task = new MyTask();
timer.scheduleAtFixedRate(task, 0, 500);
}
public void doIt() {
running = false;
System.out.println(task.getCount() + " times");
task.cancel();
}
public static void main(String[] args) {
JTimer phone = new JTimer();
phone.startRinging();
try {
System.out.println("started running...");
Thread.sleep(1000);
} catch (InterruptedException e) {
}
phone.doIt();
try {
System.out.println("Thread Stop...");
Thread.sleep(1000);
} catch (InterruptedException e) {
}
phone.reStart();
}
}
음.... 그냥 간단한 소스 이구요 아래소스는 ㅡㅡ..소스어딧더라.....아래 소스는 state 가 아니라 그냥 구현된 소스니,
잘못 보지 않길 바래요...T_T
<pre class="brush:java">
</pre>
public class TimerTest {
Timer timer1;
Timer timer2;
volatile boolean a = false;
public TimerTest() {
timer1 = new Timer();
timer2 = new Timer();
}
public void runStart() {
timer1.scheduleAtFixedRate(new Task1(), 0, 1000);
}
class Task1 extends TimerTask {
public void run() {
System.out.println("Checking a");
a = SomeClass.getSomeStaticValue();
if (a) {
// Pause/stop timer1, start/resume timer2 for 5 seconds
timer2.schedule(new Task2(), 5000);
}
}
}
class Task2 extends TimerTask{
public void run() {
System.out.println("Checking a");
a = SomeClass.getSomeStaticValue();
if (!a) {
// Pause/stop timer2, back to timer1
timer1.scheduleAtFixedRate(new Task1(), 0, 1000);
}
// Do something...
}
}
public static void main(String args[]) {
TimerTest tt = new TimerTest();
tt.runStart();
}
</pre>
ㅎㅎ ㅎ
Reference
[1] I Don't Know ( http://stackoverflow.com/questions/2098642/pausing-stopping-and-starting-resuming-java-timertask-continuously )
-
[1] I Don't Know ( http://stackoverflow.com/questions/2098642/pausing-stopping-and-starting-resuming-java-timertask-continuously )
-