멀티 스레드 Multi Thread

멀티 스레드 Multi Thread

프로세스 : 실행중인 프로그램

프로그램 : 만들어졌는데 아직 실행되지 않고 하드디스크에 저장된 상태

 

스레드 : 프로세스를 실행시켜 준다.

main이 쓰레드다. main이 없으면 실행 안됨.

 

 

  • 멀티쓰레드의 장/단점

    • CPU사용률 향상
    • 응답성 향상
    • 자원 공유 -> 효율성 증대
    • Context Switching 비용 발생

 

  • 자바에서는 멀티스레드의 순서가 보장되지 않는다.

 

 

메소드 상태(cycle) - 5가지.

 

 

running 이후 할당된 시간이 끝나면 다시 runnable 상태로 대기줄에 서게된다.

  • new => runnable 로 갈때 꼭! start() 라는 메소드를 호출해줘야 한다.
  • yield()

    running에서 양보하라고 메소드를 호출할 수 있다.

    runnable 대기큐를 체크해서 자기보다 우선순위가 높거나 같은애가 있다면 양보한다.

    우선순위가 높은애가 없으면 양보하지않는다.

 

 

< Thread를 만드는 방법 두가지 >

  1. Runnable 인터페이스 구현

 

  1. thread 클래스 상속

 

 

if ) 어떤 클래스에서 thread를 써야겠다.

-> 아무것도 상속받지 않은 상태라면 implements도 되고, 상속도 됨.

-> 어떤 클래스를 상속하고 있다면 implements만 가능

(공통) 쓰레드가 해야하는 작업내용이 들어있는 메소드를 만들어놔야한다.

 

 

callback method

 

 

 

<실행결과>

 

캡처

Thread객체 생성시 parameter로 Runnable 타입의 객체를 받을 수 있다.

 

 


  1. main에서 m 생성
  1. 생성자로 들어가서 thread t 생성
  2. t.join (); //Waits for this thread to die
  3. main이 t스레드가 끝날때까지 기다려줌
  1. main thread 실행

    **) main thread가 우선순위가 더 높기때문에 default상태로는 먼저 실행

 

'Computer Science > Languages' 카테고리의 다른 글

[java 예외처리]Try-with-resources  (2) 2019.07.11
java tip  (0) 2019.02.18
[java] 예외처리  (2) 2019.01.24
[java] Collection 활용  (0) 2019.01.17
[java] interface  (0) 2019.01.16

+ Recent posts