Bibi's DevLog ๐ค๐
[Java] ์ค์ผ์ค๋ฌ : ์ผ์ ์๊ฐ๋ง๋ค ๋ฐ๋ณต์คํ - Timer, TimerTask, .scheduleAtFixedRate() ๋ณธ๋ฌธ
[Java] ์ค์ผ์ค๋ฌ : ์ผ์ ์๊ฐ๋ง๋ค ๋ฐ๋ณต์คํ - Timer, TimerTask, .scheduleAtFixedRate()
๋น๋น bibi 2020. 11. 17. 18:17ํ๊ธ์๊ณ ์์ ๋ฅผ ํ๋ฉฐ ์ฐพ์ ์๋ฐ - ์ผ์ ์๊ฐ๋ง๋ค ๋ฐ๋ณต์คํํ๋ ๋ฐฉ๋ฒ(์ค์ผ์ค๋ฌ) ์ ์ ๋ฆฌํด ๋๋ค.
์ฐธ๊ณ ํ ๊ณณ๋ค
javacan.tistory.com/entry/29
http://oniondev.egloos.com/9678784
https://hamait.tistory.com/211
๊ฐ์ฌํฉ๋๋ค. ๐โโ๏ธ
์๋ฐ์์ ์ด๋ค ์์
์ ์ผ์ ์๊ฐ๋ง๋ค ์คํํ๊ธฐ ์ํด์๋ java.util.Timer
ํด๋์ค์ java.util.TimerTask
ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค.
Timerํด๋์ค๋ .scheduleAtFixedRate()
์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ TimerTask๋ก ์ ์๋ ์์
์ ๋ฐ๋ณต ์คํํ๋ค.
Timer ํด๋์ค
import java.util.Timer;
๋ก ๋ถ๋ฌ์จ ๋ค์,Timer scheduler = new Timer();
๋ก ์ด๊ธฐํํด ์ฌ์ฉ.
TimerTask ํด๋์ค
import java.util.TimerTask;
๋ก ๋ถ๋ฌ์จ ๋ค์,TimerTask task = new TimerTask() { @Override }
๋ก ์ฌ์ฉ.
@Override ์๋์ ์ ์๋run()
๋ฉ์๋๊ฐ task๋ก ์คํ๋๋ค.
(์ฌ์ค ์์ง ์ค๋ฒ๋ผ์ด๋์ ๋ํด ์ ๋ชจ๋ฅด์ง๋ง TimerTask ์ด๊ธฐํ๋ง ํ๋๋ฐ๋ ์๋์์ฑ์ด ๋์ด ์ฃผ์๋ค - ์ธํ ๋ฆฌJํ๊ฒฝ)
.scheduleAtFixedRate() ๋ฉ์๋
- (void)
scheduleAtFixedRate(TimerTask task, long delay, long period)
delay(์ผ์ ์๊ฐ)์ด ์ง๋ ํ์ period(์๊ฐ ๊ฐ๊ฒฉ)์ผ๋ก task(์์ )์ ์ํํ๋ค.
- (void)
.scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
firstTime(์ง์ ๋ ์งor์๊ฐ) ๋ถํฐ ์์, period(์๊ฐ๊ฐ๊ฒฉ) ๋ง๋ค task(์์ )๋ฅผ ๋ฐ๋ณต ์ํํ๋ค.
โ
long ํ์ ์ period์ delay๋ 1000 = 1์ด ๋ก ํ์ฐํด ์ ๋ ฅํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด 10์ด ๋ค 1๋ถ๋ง๋ค ๋๊ฒ ํ๊ณ ์ถ๋ค๋ฉด delay์๋ 10000, period์๋ 60000 ์ ์ ๋ ฅํด์ผ ํ๋ค.
โป.scheduleAtFixedRate()์ ๋ค ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก(TimeUnit.Minute)๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๊ณ ํ๋๋ฐ, ๋ด๊ฐ ์ฌ์ฉํ์ ๋๋ ์๋ฌ๊ฐ ๋์ ๊ทธ๋ฅ ์ง์ ๋ค.
์์ ํด๋์ค๋ค๊ณผ ๋ฉ์๋(1.)๋ฅผ ํ์ฉํด ์๋์ ๊ฐ์ ๋ฐ๋ณต์คํ ์ฝ๋๋ฅผ ์ง ๋ณด์๋ค.
// ...
import java.util.Timer;
import java.util.TimerTask;
public class HangeulClock {
public static void main(String[] args) {
HangeulClock hangeulClock = new HangeulClock();
Timer scheduler = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
String[][] clockResult = hangeulClock.showHourMinute();
hangeulClock.printHangeulClock(clockResult);
}
};
scheduler.scheduleAtFixedRate(task, 1000, 60000); // 1์ด ๋ค 1๋ถ๋ง๋ค ๋ฐ๋ณต์คํ
}
// codes ...
}