티스토리 뷰

 주먹구구식으로 Spigot 플러그인을 제작할 때, 항상 Runnable 인터페이스를 잘 사용을 못해서, HashMap으로 스킬 쿨타임 들을 구현했던 기억이 난다. (뭐, 지금 생각해도 Map이 더 효율적인 방법이긴 하지만...ㅎ)

아무리 여러 블로그에 있는 포스팅들을 읽어봐도  Multi Threads 로 제 각각의 타이머를 만드는 개념이 이해가 잘 안 됐었다. 그래서 다루는 김에 간단히 1분을 세는 타이머를 구현한 방법을 적어볼까 한다.

 


○RunnableTest:

package com.choonham;

public class RunnableTest implements Runnable {

	int count = 0;
	int num = 0;
	boolean timeOut = false;

	public RunnableTest() {
		// TODO Auto-generated constructor stub
	}

	public RunnableTest(int count) {
		this.count = count;
	}

	@Override
	public void run() {
		while (!this.timeOut) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				System.out.println(e.getMessage());
			}
			this.num++;
			if (this.count <= this.num) {
				this.timeOut = true;
			}
			System.out.println(Thread.currentThread().getName() + " : " + num);
		}
	}

}

 

○MainClass:

package com.choonham;

public class MainClass {

	public static void main(String[] args) {
		System.out.println("주 스레드 시작");

		RunnableTest r = new RunnableTest(60);
		Thread t = new Thread(r);
		t.start();
		System.out.println("주 스레드 종료");
	}

}

 

 

내가 오랜 시간 이해가 안된 개념이라 한번 적어는 봤는데.... 코드를 보면, 복잡할 것이 1도 없는 간단한 코드로 구현이 되었다.

역시 읽는 것 보다는 한번 적어보는 게 최고다.

반응형
Comments