개념



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 문으로 무한 루프 돌리면 된다.. 






















+ Recent posts