[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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.