[Java] 자바 스레드 예제
▣ 자바(Java) 스레드 예제
Thread와 Runnable을 구현한 클래스
■ 먼저 간단하게 thread와 Runnable를 동시에 구현한 클래스의 예를 만들어보겠습니다.
Threa API 활용
■ 이번에는 스레드 클래스를 이용해서 얻을 수 있는 정보를 살펴보도록 하겠습니다.
지난 포스팅에서 API를 정리해봤었는데요. 그 메서드들을 이용해서 예제를 만들어 보겠습니다.
■ 소스 코드를 살펴보면
* 5번 라인 : 현재 이 프로그램이 진행행중인 상태에서 Thread의 총 갯수를 나타나내는 것입니다.
* 8번 라인 : 이 코딩을 만나게 되면 실행중인 Thread를 객체로 담아둘 수 있습니다.
*10번 라인 : cur라는 객체에 담긴 Thread의 이름을 출력하게 합니다.
*13번 라인 : 시간 지연 매서드로 2초동안 Thread를 멈추게 합니다. 이렇게 2초동안 CPU는 쉬게 되는데 이때 다른 스레드가 침범하거나 종료되는 상태를 확인하기 위해서 InterruptedException이라는 예외처리를 합니다.
*17번 라인 : cur객체에 담겨있는 스레드의 우선순위를 출력합니다.
*18번 라인 : cur객체가 유효한지를 출력하는 문구입니다.
*19번 라인 : cur가 main Thread에 종속되어 있는지를 확인합니다.
■ 일반적으로 스레드는 독립 Thread와 종속Thread가 있는데요. 종속(setDemon=true)은 메인이 종료되면 자신의 실행이 끝나지 않았어도 같이 종료되버리는 것입니다. 반대로 독립은 메인이 종료되든 말든 자신이 실행해야 할 부분을 모두 실행하고 종료가 됩니다.
독립 Thread
■ 독립스레드를 만들어서 메인과는 상관없이 실행되는 형태를 만들어 보도록 할게요.
■ 위의 AAA클래스의 코딩을 살펴보면 현재 시스템 시간을 Date객체로 얻어오면서 1초의 시간을 지연하고, BBB클래스의 경우는 0~4까지의 숫자를 출력하면서 0,4초를 지연시킵니다. 메인의 start문구가 먼저 출력이 되고 AAA, BBB클래스 thread의 인스턴스를 생성하고 독립thread로 선언을 하고 두개의 스레드를 실행을 시킵니다.
■ 실행을 시켜보면 "메인 End!!!!"가 출력되면서 메인이 종료 되는걸 확인할 수 있는데요. 이와 상관없이 끝까지 실행을 하게 됩니다.