자바 프로그램은 우리가 익히 알다시피 프로그램을 실행시키면 스레드가 생성되고 해당 스레드가 일련의 일들을 모두 마치면
소멸되어 프로그램이 종료되게 된다.
일반적으로 우리가 작성한 프로그램은 싱글 스레드 상태로 작동하게 되는데, 이 스레드는 다양한 방법으로 제어가 가능하다.
오늘 소개할 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 ); } } } |
실행결과
'JAVA > 소스코드' 카테고리의 다른 글
[Java] DecimalFormat, NumberFormat 숫자 포맷 (0) | 2015.10.22 |
---|---|
[Java] 숫자 금액표시(세자리 콤마) 및 소수점 포맷 (0) | 2015.10.22 |
Java 실수형 데이터 소수점 자르기(DecimalFormat) (0) | 2015.10.22 |
String 타입을 Date 형으로 변환 (0) | 2015.07.31 |
[Java] List 와 배열 변환 (0) | 2015.02.06 |
[java] 소수점 이하 자리 고정후 0으로 채우기 (0) | 2014.10.23 |
[Java] 간단한 숫자체크 (0) | 2014.10.23 |
숫자를 한글로 표현 소스코드 질답 (0) | 2014.09.16 |