![졸려](http://i1.daumcdn.net/mimg/mypeople/sticker/edit/sticker_387.png)
안녕하세요 꼬로미입니다!
안드로이드 프로세스와 스레드 이어지는 포스팅입니다
전 포스팅에서는 프로세스에 대해서 알아보았고 (프로세스 편 : http://colomy.tistory.com/49)
이번 포스팅에서는 스레드에 대해서 알아볼게요~
스레드(Thread)
애플리케이션이 시작되면 안드로이드 시스템은 애플리케이션을 위한 스레드를 생성,
이 스레드를 메인 스레드(main thread)라고 하며
메인 스레드는 사용자 인터페이스 위젯으로 이벤트를 전달, 화면을 그리는 작업 담당
UI 스레드(user interface thread)라고도 불림
메인 스레드
동일한 프로세스 안에서 실행되는 모든 컴포넌트는 UI 스레드에서 실행
컴포넌트의 시스템 호출이 실행되는 스레드
사용자 인터페이스와 관련 콜백 메소드, 생애주기 관련 메소드들이 실행되는 스레드
작업 스레드(worker thread)
부담이 큰 작업들을 여러가지 실행할때 메인 스레드의 블록상태를 예방을 위해
스레드를 별도로 생성, 이를 작업스레드, 배경스레드 라고 부릅니다
다중스레딩 생성 방법 2가지
- Thread 클래스를 상속받아 스레드 작성 예제
package com.example.testfile;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
WorkerThread w;
boolean running = true;
class WorkerThread extends Thread{
public void run() {
int i = 0;
for (i=0; i<20 && running; i++){
try{
}
Log.v("THREAD", "time=" +i);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
w = new WorkerThread();
running = true;
w.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
running = false;
}
}
|
실행화면
![](https://t1.daumcdn.net/cfile/tistory/2343B74753674C801D)
time=1 텍스트부터 1초마다 로그가 하나씩 올라와서 time=19까지 가는 것을 볼 수 있음
-Runnable 인터페이스를 구현해 Thread 객체에 전달하는 예제
package com.example.testfile;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
boolean running = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
public void run() {
int i = 0;
for (i=0; i<30 && running; i++){
try{
}
Log.v("THREAD", "time=" +i);
}
}
});
running = true;
w.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
running = false;
}
}
|
이 클래스는 한번밖에 사용되지 않음으로
Runnable 인터페이스를 구현한 클래스를 무명클래스로 처리
![Bye](http://i1.daumcdn.net/mimg/mypeople/sticker/edit/33.png)
읽어주셔서 감사드립니다^^
손가락버튼 한번씩 꾸욱 부탁드려요~