반응형

안드로이드에서 Thread(쓰레드)를 생성하고 시작해보자. 아주 기본적인 예제이다.

시간없으면, [설명]을 건너뛰고  [소스코드], [출력화면] 부터 봐도 된다.

 

설명

이렇게 아래처럼, Thread 클래스를 상속받는 MyThread (예시)를 정의하자.

일부로 3초 기다리고, 유저가 원하는 걸 할 수 있게끔 코드를 작성하였다.

    private MyThread mMyThread;
    private class MyThread extends Thread {
        private static final String TAG = "MyThread";
        public MyThread() {
            // 여기선 Thread에서 사용할, member 변수들을 초기화 해주는게 좋다.
            Log.d(TAG, "Thread init");
        }
        public void run() {
            try {
                Log.d(TAG, "Thread run");
                Thread.sleep(3000);
                Log.d(TAG, "Do something");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

 

적절한 위치에서, 해당 thread를 생성하고, start해주면,

그 스레드가 실행된다.

        // 적절한 위치에서, Thread를 생성 후, start를 해주면 된다.
        mMyThread = new MyThread();
        mMyThread.start();

 

 

소스코드

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "i5i501";

    private MyThread mMyThread;
    private class MyThread extends Thread {
        public MyThread() {
            // 여기선 Thread에서 사용할, member 변수들을 초기화 해주는게 좋다.
            Log.d(TAG, "Thread init");
        }
        public void run() {
            try {
                Log.d(TAG, "Thread run");
                Thread.sleep(3000);
                Log.d(TAG, "Do something");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "Hello world");

        // 적절한 위치에서, Thread를 생성 후, start를 해주면 된다.
        mMyThread = new MyThread();
        mMyThread.start();
    }
}

 

출력화면/로그

내가 정의한 스레드 (MyThread)가 실행하는 모습을 볼 수 있다.

3초 이후에 "Do something"이 출력되는 걸 확인했다.

2022-09-22 23:25:14.575 2520-2520/com.example.myapplication D/i5i501: Hello world
2022-09-22 23:25:14.576 2520-2520/com.example.myapplication D/i5i501: Thread init
2022-09-22 23:25:14.580 2520-2577/com.example.myapplication D/i5i501: Thread run
2022-09-22 23:25:17.580 2520-2577/com.example.myapplication D/i5i501: Do something

 

 

시간 절약했으면 아래의 좋아요 부탁드립니다.

반응형