[Android 개발] 스레드와 메시지 처리 - 다중 스레드 구현

현실 생활에서 많은 일들이 동시에 진행된다. 예를 들어 우리는 책을 보면서 커피를 마실 수 있다.컴퓨터는 음악을 틀면서 문서를 출력할 수 있다.이런 동시에 진행할 수 있는 임무는 라인으로 표시할 수 있으며 각 라인이 하나의 임무를 완성하고 다른 라인과 동시에 집행할 수 있다. 이런 메커니즘을 다라인이라고 부른다.다음은 어떻게 생성, 오픈, 휴면, 정지 라인을 만드는지 소개합니다.
1. 스레드 만들기
두 가지 방법
a. Thread 클래스 구성 방법을 사용하여 스레드 생성
안드로이드에서 Thread 클래스에서 제공하는 다음과 같은 구조 방법을 사용하여 스레드를 만들 수 있습니다
Thread(Runnable runnable)

이 구조 방법의 매개 변수인 Runnable는 Runnable 클래스의 대상을 만들고 그 run () 방법을 다시 쓰는 방법으로 실현할 수 있습니다. 예를 들어thread라는 라인을 만들려면 다음 코드를 사용할 수 있습니다.
Thread thread=new Thread(new Runnable(){
    //  run  
    @Override
    public void run(){
        //      
    }
});

b. Runnable 인터페이스를 통해 스레드 생성
Android에서는 Runnable 인터페이스를 사용하여 스레드를 생성할 수도 있습니다.Runnable 인터페이스를 구현하는 구문 형식은 다음과 같습니다.
public class ClassName Object implements Runnable
하나의 클래스가 Runnable 인터페이스를 실현한 후에 그run() 방법을 실현해야 한다.run() 방법에서 실행할 조작 코드를 작성할 수 있다.
예를 들어, Runnable 인터페이스를 구현하는 Activity를 만들려면 다음 코드를 사용합니다.
public class MainActivity extends Activity implements Runnable{


		@Override
		protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
		}


		@Override
		public void run() {
			//       
			
		}
		
	}

2. 스레드 오픈
스레드 대상을 만든 후 스레드를 열어야만 스레드를 실행할 수 있습니다.Thread 클래스는 다음 구문 형식으로 스레드를 여는 start () 방법을 제공합니다.
start()
예를 들어, thread라는 스레드가 있습니다. 이 스레드를 켜면 다음 코드를 사용할 수 있습니다.
thread.start();

3. 스레드의 휴면
라인의 휴면은 라인을 일정 시간 멈추고 다시 실행하는 것이다.자바와 마찬가지로 안드로이드에서도 Thread 클래스의 sleep () 방법으로 지정한 시간을 휴면시킬 수 있습니다.sleep() 메서드의 구문 형식은 다음과 같습니다.
sleep(long time)
여기서 매개 변수 time는 밀리초 단위로 휴면 시간을 지정합니다
예를 들어, 1초 동안 스레드를 일시 중지하려면 다음 코드를 사용합니다.
Thread.sleep(1000);

4. 인터럽트 스레드
지정한 스레드를 중단해야 할 때 Thread 클래스에서 제공하는interrupt () 방법을 사용할 수 있습니다.interrupt () 방법을 사용하면 지정한 라인에 중단 요청을 보내고 이 라인을 중단 상태로 표시할 수 있습니다.interrupt() 메서드의 구문 형식은 다음과 같습니다.
interrupt()
예를 들어thread라는 라인이 존재하는데, 이 라인을 끊으려면 아래 코드를 사용할 수 있습니다.
...//      
thread.interrupt();
...//      
public void run(){
    while(Thread.currentThread().isInterrupted()){
        ...//      
    }
}

또한 루틴이wait(),join(),sleep() 방법을 실행할 때 루틴의 중단 상태가 제거되고 인터럽트 Exception이 던져지기 때문에 루틴에서wait(),join(),sleep() 방법을 실행할 때 루틴을 중단하려면 boolean형 표기 변수로 루틴의 중단 상태를 기록해야 합니다.그리고 이 표시 변수를 통해 순환의 실행과 정지를 제어합니다.예를 들어, isInterrupt라는 boolean 변수로 스레드 중단을 표시하면 키 코드는 다음과 같습니다.
private boolean isInterrupt=false;//      
...//      
...//       , isInterrupt     true
public void run(){
    while(!isInterrupt){
        ...//      
    }
}

전재는 출처를 밝혀 주십시오.http://blog.csdn.net/acmman/article/details/46336965

좋은 웹페이지 즐겨찾기