[JAVA]/JAVA
<Thread> Sleep을 이용한 간단한 타이머 구현
춘햄
2021. 3. 31. 11:23
주먹구구식으로 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도 없는 간단한 코드로 구현이 되었다.
역시 읽는 것 보다는 한번 적어보는 게 최고다.
반응형