JAVA

프로세스와 쓰레드

JUN0126 2021. 7. 9. 01:18

 

프로세스(Process) 란?

 - 실행 중인 하나의 애플리케이션

 - 여러개의 쓰레드를 가지고 있을 수 있다

 - 하나의 앱이 하나의 프로세스

 

 

 

 

 

쓰레드(Thread) 란?

 - 하나의 프로세스가 두 가지 이상의 작업을 처리 할 수 있도록 해주는 기능

 - 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있어 다른 스레드에 영향을 미치게 되므로 예외 처리 필수로 해야한다.

 

• 싱글 스레드

 - 스레드가 1개 인것

• 멀티 스레드

 - 스레드를 N개 이상 사용 

 - 실행중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않는다.

  

스레드 생성

  Runnable task = new Task();

  Thread thread = new Thread(task) 

  class Task implements Runnable {                                  class Task extends Thread {            

     public void run() { 스레드 실행 코드 }              OR           @Override

   }                                                                             public void run() { 스레드 실행 코드}

   OR                                                                          }

  Thread thread = new Thread(

    new Runnable() { public void run () { 스레드 실행 코드 } 

  )

 

- Runnable 인터페이스를 구현한 객체를 매개변수로 넣어 호출하여 생성한다.

 

스레드 실행(대기) : thread.start();

스레드 실행 : thread.run()

 

Thread 구현 및 생성을 위한 Runnable , Callable 인터페이스

  Runnable Callable
return 타입 제네릭으로 받은 리턴 반환
예외처리  X Exception 처리 가능
구현 메소드 run() call()

 

동시성과 병렬성

- 멀티 작업을 위하여 스레드는 여러개를 번갈아가면서 실행하는 동시성과 멀티코어에서 개별 스레드를 동시에 실행 시키는 병렬성을 충족 해야 한다, 이를 위해서는 스케쥴링이 필요한데 스레드의 우선 순위를 주어 동시성과 병렬성을 충족 시킬 수 있다.

 

 thread.setPriority(Thread.MAX_PRIORITY)   // 10

 thread.setPriority(Thread.NORM_PRIORITY)  // 5

 thread.setPriority(Thread.MIN_PRIORITY)  // 1

 

동기화

- 여러개의 스레드가 작업 중일 경우 하나의 스레드의 결과가 다른 스레드에 영향을 미칠수도 있으면 동기화 메소드를 이용하여 스레드를 관리 할 수 있다.

- synchronize가 붙은 메소드는 해당 작업이 다 끝날때 까지 다른 스레드를 실행 시키지 않고 해당 스레드 마무리 후 진행된다.

public stnchronized 리턴타입 메소드(){

  스레드 실행 구문

}

 

쓰레드는 위에 적은것을 제외 하고도 많은 기능들이 있다. 스레드를 이용할 떄 다시 한번 정리하며 진행하면 좋을듯 하다

 

'JAVA' 카테고리의 다른 글

일급 컬렉션 (First Class Collection)  (0) 2021.07.13
컬렉션 프레임워크  (0) 2021.07.10
상속  (0) 2021.07.07
equals()와 hashCode() 함수 차이  (0) 2021.07.03
예외(Exception) 처리  (2) 2021.06.30