개념
Process - 실행중일 프로그램. 쓰레드와 자원으로 구성
Thread - 하나의 작업을 실행하는 작업 단위.
interruptedexception - 서버가 도중에 끊키거나 서버에 문제가 생겼을 때 발생하는 예외
Thread 의 스케쥴링은 자바 jvm 내에서 작업의 순서가 저장된다.
- > 작업의 우선순위를 보장받지 못한다는 말과 같다.
예제를 보면서 이해해보자..
import Thread.Thread1;
import Thread.Thread2;
public class Test {
public static void main(String[] args) {
Thread1 thread1 = new Thread1();
thread1.start();
Thread thread2 = new Thread(new Thread2());
thread2.start();
Thread thread3 = new Thread();
thread3.start();
int sum = 0;
for (int i = 0; i < 10; i++) {
sum = +i;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Main Thread = " + sum);
}
}
}
코드를 아래와 같은 그림으로 나타 낼 수 있다.
=> 메인 쓰레드에서 쓰레드 3개가 돌고 있다... 쉽다.
또한 setPriority() 메소드를 통해 우선순위를 설정할 수 있다.
멀티쓰레드의 장 단점
장점 |
- 자원을 보다 효율적으로 사용한다. - 사용자에 대한 응답성이 향상된다. - 작업이 분리되어 코드가 간결해진다. |
단점 |
- 동기화에 주의 - 교착상태가 발생하지 않게 조심 해야한다. - 쓰레드가 효율적으로 실행되게끔 고려해야한다. |
Thread Groop
- 관련된 쓰레드를 그룹으로 다루는 것이다.
- 쓰레드 그룹은 반드시 하나 이상 포함된다. 포함하지 않으면 자연스럽게 메인 쓰레드에 포함된다.
- 쓰레드 그룹으로 부터 우선순위를 상속받기 때문에, 같은 쓰레드 그룹에 있는 쓰레드들은 우선순위를 공유한다..
(쉽다)
Daemon Thread
- 어렵게 생각할 것 없다. 데몬은 쓰레드가 계속 실행되고 있는 상태이다.
- 가장 간단하게 while 문으로 무한 루프 돌리면 된다..
'programming > Java' 카테고리의 다른 글
# NIO - Selector (0) | 2018.05.19 |
---|---|
# chatting program 구현 / 네트워크 교육과정 (4일차) (1) | 2018.03.22 |
# network, socket / 네트워크 교육과정 (3일차) (0) | 2018.03.22 |
# IO , Stream / 네트워크 교육과정 (2일차) (0) | 2018.03.19 |
# Synchronized (0) | 2018.02.26 |