Java ํ๋ก๊ทธ๋จ์๋ ์ค๋ ๋๊ฐ ๋๋ฌด ๋นจ๋ฆฌ ์คํ๋๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ํํด์ผ ํ๋ ์ํฉ์ด ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ํ์ฌ ์ค๋ ๋์ ์คํ์ ์ผ์ ์ค๋จํด์ผ ํฉ๋๋ค. Java์์๋ java.lang.Thread.sleep() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค.
Thread.sleep() ๋ฉ์๋
Thread ํด๋์ค๋ Java.lang ํจํค์ง์ ์์ผ๋ฉฐ Thread.sleep() ๋ฉ์๋ ๋ฅผ ํฌํจํฉ๋๋ค . Java.lang.thread sleep() ๋ฉ์๋๋ ์ง์ ๋ ์๊ฐ(๋ฐ๋ฆฌ์ด) ๋์ ํ์ฌ ์ค๋ ๋๋ฅผ ์ผ์ ์ค๋จํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Oracle ๋ฌธ์๋ฅผ ๋ณด๋ฉด Thread ํด๋์ค ์ ๋ ๊ฐ์ง ์ค๋ฒ๋ก๋๋ sleep() ๋ฉ์๋ ๊ฐ ์์์ ์ ์ ์์ต๋๋ค .
static void sleep(long millis)
์ฌ๊ธฐ์ millis๋ ๋ฐ๋ฆฌ์ด ๋จ์์ ์๊ฐ์
๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋๋ฅผ ์์คํ
ํ์ด๋จธ ๋ฐ ์ค์ผ์ค๋ฌ์ ์ ๋ฐ๋์ ๋ฐ๋ผ ๋ฐ๋ฆฌ์ด ๋์ ์ ์๊ธฐ(์ผ์์ ์ผ๋ก ์คํ ์ค์ง, "์๋ฉด") ์ํ๋ก ๋ง๋ญ๋๋ค. ๋ฐ๋ฆฌ์ด์ ๋ํ ์ธ์ ๊ฐ์ ์์๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด IllegalArgumentException ์ด ๋ฐ์ํฉ๋๋ค.
static void sleep(long millis, int nanos)
์ฌ๊ธฐ์ mills๋ ๋ฐ๋ฆฌ์ด ๋จ์์ ์๊ฐ์ด๊ณ nanos๋ ๋๋
ธ์ด ๋จ์์ ์๊ฐ์
๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ณํ์ ์ ํํ ์๊ฐ(๋ฐ๋ฆฌ์ด ๋ฐ ๋๋
ธ์ด) ๋์ ํ์ฌ ์ค๋ ๋์ ์คํ์ ์ผ์ ์ค๋จํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋๋
ธ์ด ๊ฐ์ 0์์ 999999 ์ฌ์ด์์ ์ ํจํฉ๋๋ค . Thread.sleep() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ 5์ด ๋์ ๊ธฐ๋ณธ ์ค๋ ๋์ ์คํ์ ์ผ์ ์ค์งํ๋ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค .
public class SleepDemo {
public static void main(String[] args) throws InterruptedException {
//the current time in milliseconds
long start = System.currentTimeMillis();
// stop the main thread of the program for 5000 milliseconds (5 seconds)
Thread.sleep(5000);
System.out.println("The thread is paused for " + (System.currentTimeMillis() - start) + " milliseconds");
}
}
์ด ํ๋ก๊ทธ๋จ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์? ๋จผ์ ์์๋ ๋ค์ 5๋ฐ๋ฆฌ์ด(5์ด) ๋์ ํด๋ฉด ์ํ๊ฐ ๋ ๋ค์ ์ฝ์์ ์ผ๋ง๋ ์ค๋ซ๋์ ์ ์ง๋์๋์ง์ ๋ํ ๋ฉ์์ง๋ฅผ ์ธ์ํ ๋ค์ ์ข
๋ฃ๋ฉ๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋ ๋๊ฐ 5008๋ฐ๋ฆฌ์ด ๋์ ์ผ์ ์ค์ง๋ฉ๋๋ค.
๋ณด์๋ค์ํผ ํ๋ก๊ทธ๋จ์ 5์ด ๋์ ๋ฉ์ถ์ง ์๊ณ ์กฐ๊ธ ๋ ๊ธธ๊ฒ ๋ฉ์ถฅ๋๋ค. ๋ํ ์ปดํจํฐ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด 5000๋ฐ๋ฆฌ์ด ์ด์ ๋์ ์ค๋ ๋ ์คํ์ ์ค์งํ ์ ์์ผ๋ฉฐ 5008๋ฐ๋ฆฌ์ด ๋์์ ํ์ํ์ง ์์์ ์ ์ ์์ต๋๋ค. ์์ ์ ๋ชจ๋ ๊ฒ์ด ์ด์ ์ฒด์ ์ ์ค๋ ๋ ์ค์ผ์ค๋ฌ์ ํน์ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค๋ ๊ฒ์
๋๋ค. ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช
ํ๋ฉด ์ค๋ ๋๊ฐ ๊นจ์ด๋์ ์คํ์ ์์ํ๊ธฐ ์ ์ ๋๊ธฐํ๋ ์ค์ ์๊ฐ์ ์์คํ
ํ์ด๋จธ์ ์ค์ผ์ค๋ฌ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ์กฐ์ฉํ ์์คํ
์ ๊ฒฝ์ฐ ์ค์ ์ ์ ์๊ฐ์ ์ง์ ๋ ์ ์ ์๊ฐ์ ๊ฐ๊น์ง๋ง ๋ก๋๋ ์์คํ
์ ๊ฒฝ์ฐ ์ฝ๊ฐ ๋ ๊น๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ด๋ค ์์
์ ํญ์ ์ํํด์ผ ํ์ง๋ง ๋๋ฌด ์์ฃผ๋ ์๋ ๊ฒฝ์ฐ ์์ ์ค๋ ๋์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์์ ๋งค์ด ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ์ ๋ ์ข
๋ฃํ์ง ์๋ ํ๋ก๊ทธ๋จ์ ์์
๋๋ค.
public class SleepDemo1 {
public static void main(String[] args) throws InterruptedException {
while (true)
{
Thread.sleep(1000);
System.out.println("One more second");
}
}
}
Java Thread Sleep์ ์ค์ ์ฌํญ
Java Thread Sleep ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค .-
ํญ์ ํ์ฌ ์ค๋ ๋์ ์คํ์ ์ผ์ ์ค๋จํฉ๋๋ค.
-
์ค์ ์ค๋ ๋๋ ๊นจ์ด๋ ๋๊น์ง ์ ๋ค๊ณ ์คํ ์๊ฐ์ ์์คํ ํ์ด๋จธ์ ์ค์ผ์ค๋ฌ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
-
ํด๋ฉด ์ค๋ ๋๋ ํ์ฌ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์์ต๋๋ค.
-
๋ค๋ฅธ ์ค๋ ๋๋ ํ์ฌ ํด๋ฉด ์ค์ธ ์ค๋ ๋๋ฅผ ์ค๋จํ ์ ์์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ InterruptedException์ด ๋ฐ์ํฉ๋๋ค.
-
๋ฐ๋ฆฌ์ด์ ๋ํ ์ธ์ ๊ฐ์ ์์๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด IllegalArgumentException์ด ๋ฐ์ํฉ๋๋ค.
public class SleepDemo1 {
public static void main(String[] args) throws InterruptedException {
//the current time in milliseconds
long start = System.currentTimeMillis();
// stop the main thread of the program for 5000 milliseconds (5 seconds)
Thread.sleep(-5000);
System.out.println("The thread is paused for " + (System.currentTimeMillis() - start) + " ms");
}
}
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋ ๋ "main" java.lang.IllegalArgumentException์ ์์ธ: SleepDemo.main(SleepDemo.java:7)์ java.base/java.lang.Thread.sleep(๋ค์ดํฐ๋ธ ๋ฉ์๋)์์ ์๊ฐ ์ด๊ณผ ๊ฐ์ด ์์์
๋๋ค.
์์์ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ ๋ค๊ฒ ํ์ต๋๋ค. ์ด์ ๋ฉ์๋๋ฅผ ๋ค๋ฅธ ์ค๋ ๋์ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
// Java Program to sleep the custom thread
public class SleepDemo2 extends Thread{
public void run()
{
// thread 0
try {
for (int i = 0; i < 10; i++) {
// sleeps the main thread for about 2 seconds
Thread.sleep(2000);
System.out.println(i);
}
}
catch (Exception e) {
// catching the exception
System.out.println(e);
}
}
public static void main(String[] args)
{
SleepDemo2 sleepDemo2 = new SleepDemo2();
sleepDemo2.start();
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
0 1 2 3 4 5 6 7 8 9
GO TO FULL VERSION