Thread란 - 멀티태스킹
프로그램실행 > 프로세스 하나에 쓰레드가 꼭 들어있다
cpu - 한번에 한가지일 -> 시분할(엄청짧은시간동안 처리) -> 연속적인 일
동시에 다른일을 하고싶을때 쓰레드를 써야한다
super -> 부모에 있는 메소드를 실행시키겠다
Interrupted -> 가로채다
클래스안에 클래스 => 이너클래스
핸들러 -> UI,UX 수정하고싶을때 필수
쓰레드 2가지 방법
상속, 인터페이스
package com.example.ex220519;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity2 extends AppCompatActivity {
private Button btn_start, btn_stop, btn_reset;
private TextView tv_result;
private int minute; // 분
private int second; // 초
private int milliSecond; // 밀리초
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
String result = "";
if(msg.arg1 < 10){
result += "0" + msg.arg1;
}else{
if(msg.arg1 == 100){
second++;
milliSecond = 0;
}
result += msg.arg1;
}
if(second < 10){
result = "0" + second +"."+ result;
}else{
result = second +"."+ result;
if(second >= 60){
minute ++;
second = 0;
}
}
if(minute < 10){
result = "0" + minute + ":" + result;
}else{
result = minute + ":" + result;
}
tv_result.setText(result);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
tv_result = findViewById(R.id.tv_result);
btn_reset = findViewById(R.id.btn_reset);
btn_stop = findViewById(R.id.btn_stop);
btn_start = findViewById(R.id.btn_start);
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MyThread thread = new MyThread();
thread.start();
}
});
}
public class MyThread extends Thread{
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
milliSecond++;
Message message = new Message();
message.arg1 = milliSecond;
handler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}