개인공부용123 프로그래밍 블로그

[안드로이드 스튜디오] 쓰레드 -1- 본문

Android Studio

[안드로이드 스튜디오] 쓰레드 -1-

개인공부용123 2016. 11. 7. 23:07

쓰레드 -1-


새로운 프로젝트를 생성하게되면 자동으로 생성되는 메인 액티비티는 어플리케이션이 실행될 때 하나의 Main프로세스에서 실행됩니다. 만약 하나의 프로세스 안에서 여러개의 작업이 동시에 수행되기위해서는 새로운 쓰레드를 만들어서 처리할수 있습니다.


멀티 쓰레드 방식은 같은 프로세스 안에서 메모리 리소스를 공유하게 되므로 효율적인 처리가 가능하지만 동시에 리소르를 접근할 경우 데드락이 발생할수도 있습니다.(데드락을 해결하기위한 여러방법이 있지만 언급하지않겠습니다.)


멀티스레드에 대한 이미지 검색결과

< 멀티 쓰레드 >


- 코            제 -


public class MainActivity extends AppCompatActivity {

private int value = 0;
private boolean running = false;

TextView textView01;

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

textView01 = (TextView) findViewById(R.id.textView01);

// 버튼 이벤트 처리
Button showBtn = (Button) findViewById(R.id.showBtn);
showBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
textView01.setText("스레드에서 받은 값 : " + value);
}
});
}

/**
* 화면 보일 때 스레드 시작
*/
protected void onResume() {
super.onResume();

running = true;
Thread thread1 = new BackgroundThread();
thread1.start();
}

/**
* 화면 안보일 때 스레드 중지
*/
protected void onPause() {
super.onPause();

running = false;
value = 0;
}

/**
* 스레드 정의
*/
class BackgroundThread extends Thread {
public void run() {
while(running) {
try {
// 1초마다 한번씩 값을 증가시킴
Thread.sleep(1000);
value++;

} catch(InterruptedException ex) {
Log.e("SampleJavaThread", "Exception in thread.", ex);
}
}
}
}

}


Thread클래스를 상속받는 클래스를 만들고 1초마다 한번씩 쓰레드를 이용해서 값을 증가시키는 코드입니다.

Thread.sleep(1000)은 쓰레드를 1초간 지연시키는 코드이고 Thread를 new로 생성한후 thread.start()는 쓰레드를 이용해서 run()메소드를 실행시킵니다.