반응형
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와 같은 개념으로 사용이 되기도 하며, 위와 같은 방법으로 사용이 됩니다.
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와 같은 개념으로 사용이 되기도 하며, 위와 같은 방법으로 사용이 됩니다.
반응형
'옛글 > 안드로이드 프로그래밍' 카테고리의 다른 글
안드로이드 리스트뷰 특정 행 감추고 싶을 때 (2) | 2011.12.20 |
---|---|
indexoutofboundsexception size와 index 에러는 왜 나나요? (0) | 2011.12.20 |
안드로이드 핸들러와 자바 핸들러의 차이점? (0) | 2011.12.13 |
복잡한 안드로이드 코딩 소스 Log.i 로 잡아내자! (0) | 2011.12.06 |
안드로이드 두 값을 비교해서 반대 값 출력 및 대입 ? "0" : "1" (0) | 2011.12.06 |