728x90
반응형

자바 프로그램은 우리가 익히 알다시피 프로그램을 실행시키면 스레드가 생성되고 해당 스레드가 일련의 일들을 모두 마치면
소멸되어 프로그램이 종료되게 된다.

일반적으로 우리가 작성한 프로그램은 싱글 스레드 상태로 작동하게 되는데, 이 스레드는 다양한 방법으로 제어가 가능하다.


오늘 소개할 sleep 메소드를 사용하면 스레드는 sleep 명령에 의해 블로킹 되어 잠시 정지되는 상태가 된다.
sleep 메소드는 정해진 시간만큼 대기하였다가 이후 일들을 처리하게 되는데, 이런 부분을 잘 응용하면 프로그램상에서 유용하게 사용할 수 있다.

예를들어 클라이언트와의 규약으로 인하여 어떠한 로직을 처리하는데 있어서 2초 간격으로 해당 로직을 수행해야 하는 경우 sleep 메소드를 통해 실행시간을 어느정도 제어 할 수 있다.

나 같은경우 예전에 socket 통신을 하는 모듈을 개발한적이 있는데, 이때의 요구사항은 24시간 프로그램이 실행되어야 하며 5분마다 소켓에 연결하여 데이터를 받아오는 내용이었다. 개발자 초초보였던 나는 당시에 while문과 sleep을 가지고 해당 부분을 처리하였다. (물론 경력이 쌓이고 이후에 해당 로직은 다른 메소드로 변경하여 시간을 제어 했다)


sleep은 별도의 구현없이 바로 호출하여 사용하면 된다(static 메소드임). 아래 예제를 보면 쉽게 감이 올것이다.


예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.text.SimpleDateFormat;
import java.util.Calendar;
 
     
 
public class SleepTest {
 
    public static void main(String[] args) throws InterruptedException {
         
         
        int num = 100 ;
         
        // 시간 출력 포맷
        SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss");
         
         
        for(int i=0; i < num; i++){
             
            Calendar cal = Calendar.getInstance() ;
             
            // 콘솔에 출력 (현재시간 + i )
            System.out.println(fmt.format(cal.getTime()) + "=" + i) ;
             
            // 1초간 중지시킨다.(단위 : 밀리세컨드)
            Thread.sleep(1000);
             
             
        }
         
    }
}



실행결과


 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,