안드로이드 스레드(Thread) 개념


Android/안드로이드 프로그래밍 2011. 12. 13. 10:10



1) Thread 클래스를 상속
2) Runnable 인터페이스를 구현한 클래스를 구현하고 Thread 의 인스턴스를 연결

 


[Thread]


Thread를 상속할때는 새로운 스레드가 실행할 코드를 run() 메소드에 오버라이드 시킨다
Runnable 객체를 매개변수로 받아 객체를 생성할수 있다.


Thread()
Thread(Runnable)
Thread(Runnable, String threadName)
Thread(ThreadGroup, Runnable, String threadName)


start() :: 메소드는 run() 메소드를 호출한다.
sleep(long milisecs) :: 지정된 초만큼 멈춘다.
sleep(long milisecs, int nanosecs) :: long + int 시간동안 멈춘다.
yield() :: 다른 스레드들에게 실행할 기회를 허용해준다.
getName() :: 스레드 이름 반환
Thread.activeCount() :: 현재 실행중인 스레드 갯수
Thread.enumerate() :: 실행중인 스레드들로 배열을 채운다.
Thread.currentThread() :: 현재 스레드 반환
Thread.dumpStack() :: 현재 메소드와 콘솔 스트림을 호출하는 모든 메소드 출력


Thread 클래스를 상속 받는 방법.(java.lang 에 포함되어 잇음)
      class A extends Thread {
        public void run() {  //Thread를 실행하라고 하면.. 이 메소드 부터 실행이 된다.

        }
      }        //A라는 클래스가 하나의 Thread가 된다.
 
      .
      .
      .
      A ap = new A()
      // ap.run();      //하면 단순히 메소드의 실행만 될 뿐이다. 그래서.. 호출하지 않는다.
      ap.start();      //하면 새로운 작업 흐름을 만들고 그것을 실행 시키라고 알려 주는것이다.
                        //start()는 Thread 객체에 포함된 메소드 이다.

 

 

[Runnable]


자바에서는 다중상속을 지원하지 않기 때문에 확장 클래스에서 쓰레드로 실행하길 원한다면
Runnable 인터페이스를 구현하면 된다.
Thread의 생성자는 Runnable 을 매개변수로 받기도 하기 때문이다.
이렇게 결합된 스레드가 실행될때는 Runnable 객체의 Run메소드가 실행된다.


Runnable 인터페이스를 상속 받는 방법.
      class A implements Runnable {
        public void run() {    //Runnable 에는 이것 하나의 메소드 밖에 없다.


        }
      }

      A ap = new A();
      Thread tt = new Thread(ap);        // 바로 실행이 안되므로 Thread에 담아서 실행 시켜야 한다.
      tt.start();

 

 


[Daemon Thread]


하나이상의 스레드를 가지고 있을때 그중 하나가 종료 되었음을 표현할수 있게 도와 준다.
setDaemon(boolean) 메소드는 스레드가 데몬인지 아닌지를 결정할 수 있게 한다.
이 메소드는 쓰레드 시작전 호출되어야하기 때문에 시작된 스레드는 데몬으로 바뀔수 없다.
데몬 스레드는 JVM 종료에 의해 종료될때 스스로의 스레드를 정리 할 수 없다는것을 주의하자






위의 설명과 같이 스레드란 process와 같은 개념으로 사용이 되기도 하며, 위와 같은 방법으로 사용이 됩니다.
삼성전자 갤럭시 S20 플러스 자급제폰, 코스믹 그레이, 256GB Apple 에어팟 프로 (노이즈캔슬링 방수 블루투스 5), MWP22KH/A, 단일 색상 삼성전자 갤럭시탭S6 10.5 128G WIFI, SM-T860N, 마운틴 그레이

WRITTEN BY
ShakeJ

트랙백  0 , 댓글  0개가 달렸습니다.
secret