스레드(Thread) - 시작점과 종료점을 가지는 하나의 작업 흐름
메인메소드 또한 하나의 스레드이다
public static void main(String[] args){ //메인 스레드의 시작
// 내용부 -> 작업흐름
} //메인 스레드의 종료
** 지금까지 스레드 프로그램을 한것이다
Ex) 하나의 파일이 다운로드 -> 진행 -> 종료 (이런 흐름이 스레드이다)
** 만일 여러개의 파일 다운로드를 진행한다면 멀티스레드(시분할 개념의 작동 방식 근거)
*** 시분할 개념 - 시간을 나누어 복수의 일을 처리하는 것(한번의 처리하는 것처럼 보인다)
스레드 클래스 생성
-java.lang.Thread
-java.lang.Runnable (Thread클래스와 같이 사용한다 - Thread를 진행할 수 있는 매소드가 포함되어있지 않기 때문이다)
위의 실행결과처럼 Runnable인터페이스를 구현한 A1은 메인메소드의 for문과 번갈아 가면서 실행되어진다.
.
*** 스레드 상속 작성 방법 ***
1. 스레드를 상속받는 클래스를 작성한다
2. run() 메소드를 오버라이딩하여 내용부를 구현한다
3. main()메소드 내부에서 스레드를 상속받은 클래스 객체 생성
4. 해당객체 start()메소드를 호출한다
Thread를 상속 받은 클래스를 이용하여 작성한 방법
*** 스레드의 우선순위 값 확인 ***
- CPU의 시분할 개념을 이용하여 여러 개의 작은 프로그램들이 번갈아 가면서 실행할 수 있기 때문에 어떤 것을 우선적으로 실행시켜야 하는지 혹은 어떤 프로그램을 다른 것보다 좀더 오래 실행시켜야 하는지에 대한 정의가 필요
- 이것을 숫자로 표현, 범위는 1~10인데 가장 높은 우선 순위는 10이다
- 디폴트 우선순위 값은 5이다
보통 우선순위는 1부터인데 신기하게 10부터 우선순위가 시작된다.
*** Runnable과 스레드를 구현한 클래스(우선순위) ***
- 우선순위를 적용하여 구현할 수 있다.
우선순위를 부여하였다고 항상 우선순위가 높은 것 먼저 실행되지 않는다(저는 처음에 A4가 먼저 나왔어요)
우선순위는 스케줄러의 선택빈도를 높여줄 뿐이다.
'JAVA' 카테고리의 다른 글
JAVA 예외 처리 방법2 (0) | 2016.07.07 |
---|---|
JAVA 예외와 예외처리방법1 (0) | 2016.07.06 |
JAVA - 추상 클래스(Abstract Class) (2) | 2016.06.06 |
자바(JAVA) - this() (0) | 2016.05.22 |
자바 - 버블정렬(Bubble Sort) (0) | 2016.05.22 |