[Java] Timer , - start, stop, pause, Design Pattern(state)



광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject : [Java] Timer , - start, stop, pause, Design Pattern(state)

최종수정일 : 2011.00.00

안녕하세요~^^

Java에서 Timer 를 사용함에 있어서, 
Start, cancel 두개 뿐이 없네요, 
그래서 pause 를 찾아보다가, Design pattern(state) 까지 나오더라구요~!!
뭐... state 패턴은 그래도 경험상 소스를 가지고 있어야, 나중에 어떻게든 써먹으니깐요 ㅎ
그럼 그냥 정리해둘까요!? 

by 퓨림노

글을 작성하겠습니다.

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();
	    
	    
	  }
}
 

음.... 그냥 간단한 소스 이구요 아래소스는 
Design Pattern - state 입니다.  압.......
ㅡㅡ..소스어딧더라.....아래 소스는 state 가 아니라 그냥 구현된 소스니,
잘못 보지 않길 바래요...T_T


<pre class="brush:java">

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> 

ㅎㅎ ㅎ





댓글

Designed by JB FACTORY