[ Java.Thread-2. Thread만드는 방법 ]


1. java에서 Thread만드는 방법

   - 자바에서는 쓰레드를 만드는 방법이 두 가지 존재 한다.

   - API차원에서 쓰레드를 지원해주고 내가 만드는 클래스를 쓰레드로 만들어 작업을 하려면 클래스를 쓰레드클래스로 만들어야 한다.

   1) Thread 클래스를 상속받아 작성

   2) Runnable 인터페이스를 상속받아 작성



2. Thread 클래스를 상속받아 작성 방법

    1) Thread클래스를 상속받는 클래스를 작성한다.     

        public classs 클래스명 extends Thread {}


    2) public void run()를 오버라이딩한다.

       => 독립적인 실행흐름으로 작성하고 싶은 코드를 run메서드에 구현한다.

 

                 public void run(){

                     //여기에 구현

                  }


     3) 쓰레드 객체를 생성하여 start()를 호출한다.

       => start()에 의해서 JVM이 쓰레드 프로그래밍 작업을 수행할 준비를 하며 내부 스케쥴러에 의해서 적절한 시기에 run 메서드가 호출된다.



3. Runnable 인터페이스를 상속받아 작성 방법

    => 다른 클래스를 이미 상속받고 있는 경우 'Thread클래스를 상속받아 작성하는 방법'만 지원하면 멀티쓰레딩을 할 수 없다.

       따라서, Runnable을 구현하는 방법을 통해 다른 클래스를 이미 상속받고 있다고 하더라도 멀티 쓰레드를 구현 할 수 있다.

   1) Runnable 인터페이스를 상속한다.

      public class 클래스명 extends 상위클래스 implements Runnable{ 

         ....

      }

   2) run 메서드를 오버라이딩한다.

       => Thread 클래스를 상속받을 때와 동일한 방법으로 run을 오버라이딩하여 독립적인 흐름으로 실행하고 싶은 내용을 기술한다.

           public void run(){

            ...

           }


   3) thread 객체를 생성한다. 

      이 때 작성해놓은 Runnable을 상속받는 객체를 생성해서 매개변수에 지정한다.

       Runnable 하위객체 obj = new Runnable 하위객체();

       Tread t = new Tread(obj);


   4) thread 클래스의 Start를 호출한다.

      => Start를 호출하면 내부적으로 Thread 객체를 생성하면서 전달받은 Runnable 하위객체의 run을 호출한다.

         (역시 적절한 시점에 JVM에 의해 호출)



Posted by 농부지기
,