innn

기본 API 클래스 - System 클래스 본문

JAVA/자바

기본 API 클래스 - System 클래스

33삼 2022. 9. 27. 16:41

System 클래스

자바 프로그램은 운영체제에서 바로 실행되는 것이 아니라 JVM 위에서 실행된다. 따라서 운영체제의 모든 기능을 직접 이용하기는 어렵다. 하지만 java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있다. 즉, 프로그램 종료, 키보드로부터 입력, 모니터로 출력, 현재 시간 읽기 등이 가능하다. System 클래스의 모든 필드와 메소드는 정적static 필드와 정적static 메소드로 구성되어 있다. 

 

프로그램 종료(exit())

경우에 따라서는 강제적으로 JVM을 종료시킬 때도 있다. 이때 System 클래스의 exit() 메소드를 호출하면 된다. exit() 메소드는 현재 실행하고 있는 프로세스를 강제 종료시키는 역할을 한다. exit() 메소드는 int 매개값을 지정하도록 되어 있는데, 이 값을 종료 상태값이라고 한다. 일반적으로 정상 종료일 경우 0 값을 준다. 

System.exit(0);

아래 예제는 for문이 10번 반복하다가 i가 5가 되면 System.exit(0)가 실행되어 프로그램(JVM)을 종료한다. 

exit 메소드 11라인의 마무리코드가 실행되지 않는다

 

System.exit(0)은 프로그램을 강제 종료하므로 7라인에서 실행하면 11라인은 출력되지 않는다. 만약 프로그램이 종료될 때 꼭 11라인을 실행해야 한다면 System.exit(0) 대신에 for문을 빠져나오는 break문을 사용하는 것이 좋다. 7라인과 8라인을 번갈아 가면서 주석처리하고 실행해보자. 

(개인적으로 느끼기엔 cpu 강제 종료 같은 느낌이다)

 

현재 시각 읽기(currentTimeMillis(), nanoTime())

System 클래스의 currentTimeMillis() 메소드와 nanoTime() 메소드는 컴퓨터의 시계로부터 현재 시간을 읽어서 밀리세컨드(1/100초) 단위와 나노세컨드(1/10^9초) 단위의 long 값을 리턴한다. 

long time = System.currentTimeMilis();
long time = System.nanoTime();

리턴값은 주로 프로그램의 실행 요소 시간 측정에 사용된다. 프로그램 시작 시 시각을 읽고, 프로그램이 끝날 때 시각을 읽어서 차이를 구하면 프로그램 실행 요소 시간이 나온다.

 

아래 예제는 for문을 사용해서 1부터 1000000까지의 합을 구하는 데 걸리는 시간을 출력했다.

 

프로그램 실행 소요 시간 구하기