2013년 1월 21일 월요일

[Java] Thread

스레드란 프로그램의 실행 흐름을 의미한다.

스레드 작성 방법은
1. Thread를 상속받아 run메소드를 오버라이딩 하는 방법
2. Runnable을 구현하여 run메소드를 오버라이딩 하는 방법
이 있다. 이유는? 다중 상속이 안되니깐 상속 받을 수 있을 땐 Thread상속 받으면 되고 이미 상속하는 클래스가 존재하면 Runnable인터페이스를 구현해야되기 때문이다.

두 스레드가 실행될 때 어느것이 먼저 시작할까?
우리는 알지 못한다. 왜냐면 CPU를 경합하는 과정에서 예측할 수 없이 둘 중 하나가 CPU 자원을 받아서 실행하기 때문이다.

스레드를 사용하기 위해서
1. 정의한 클래스나 인터페이스의 객체를 생성
2. starts();메소드 호출

스레드의 라이프 사이클
스레드의 상태는 run메소드 진입 전, run메소드 진입, run메소드 완료로 구분된다. 이중 run메소드 진입 상태는 다시 두 가지로 구분된다.
Runnable과 NotRunnable 상태가 그것이다.

스레드의 상태가 Runnable이 되어 CPU가 해당 스레드를 선택하여 실행 가능
또는 NotRunnable이 되게 하여 CPU가 해당 스레드를 선택하지 못한다. 즉, 실행할 수 없다.
Sleep();메소드와 wait(); 메소드를 통해 스레드를 NotRunnable하게 만들어 다른 스레드에세 CPU권한을 넘기기도 하면서 어느정도의 제어가 가능하다.

Thread는 예외를 발생시키는 메소드이다. 따라서 항상 예외를 처리해야함을 유의하자.


댓글 없음:

댓글 쓰기