자바 스레드에 관하여

지훈·2025년 12월 6일

오늘은 자바 스레드에 대해 이야기해볼 것이다.

(이새끼아님)

스레드는 자바에서 여러가지 일을 동시에 처리하기 위해 사용한다.

우리가 실행하는 하나하나의 프로그램을 '프로세스' 라고 한다. 그 프로세스 안에서 이 프로그램을 구동하고 처리하기 위해 연산을 해주는 하나하나의 단위를 스레드라고 하는 것이다. 프로세스를 실행시키기 위한 연산 처리 단위를 스레드라고 한다는 뜻이다.

그러므로, 스레드가 많을수록 더욱 많은 일을 동시에 처리할 수 있게 된다. 자바는 멀티 스레드를 지원해 한개 프로세스에 한개 이상의 스레드로 이루어져 있다.

예를 들어, 발로란트를 한다고 가정했을 때, 발로란트라는 그 게임이 하나의 프로세스이고, 그 안에서 총을 쏘고, 스킨 애니메이션을 재생하고, 배경음악, 킬사운드, 상대방의 공격, 체력 계산 이 하나하나가 모두 각각의 스레드로 처리되어 동시에 계산하는 것이라고 이해하면 편하다.

예제로 스레드의 기본 원리를 설명하겠다
Main 클래스와 ExtendThread 라는 스레드 전용 클래스를 만든다.

Main 클래스:

public class Main {
    public static void main(String[] args) {

        for (int i = 1; i <= 10; i++) {
            try {
                Thread.sleep(500); // 1초가 1000
                System.out.println("메인 스레드 : " + i);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }

        ExtendsThread extendsThread = new ExtendsThread();
        extendsThread.start();


    }
}

ExtendThread 클래스:

public class ExtendsThread extends Thread{

 
    public void run(){
        for(int i = 1; i <= 10; i++){
            try {
                Thread.sleep(1000);
                System.out.println("스레드 클래스를 상속받은" +
                        " 클래스에서 작동되는 멀티스레드 : " + i);
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }

일단, 메인 클래스에 메인에서 실행시킬 코드를 작성하고, 익스텐드스레드 클래스라는 스레드 전용 클래스를 선언한다. 그 클래스를 선언하는 부분을 보면, extends Thread 라고 쓰여있다. 이것은 ExtendsThread 라는 클래스에 Thread(스레드 기능의 전부를 담고있는)클래스의 모든 기능을 상속시켜 ExtendsThread 클래스를 스레드의 기능들을 사용할 수 있는 클래스로 만들어준 것이다.

자 이렇게 두 클래스를 모두 선언했으면, 이제 스레드를 사용해보자. 메인 클래스에서 ExtendsThread extendsThread = new ExtendsThread(); 를 통해 익스텐드클래스를 생성해주고, start() 함수를 사용해준다. extendsThread.start(); 이것은, extendsThread 로 생성한 ExtendsThread 클래스 안에 run() 부분의 코드를 실행시켜주겠다는 기능이다(start()의 기능).

익스텐드클래스를 보면, Public void run()으로 run()을 사용하고 있는 것을 볼 수 있다. 메인에서 익스텐드클래스에 start()를 사용했기 때문에 익스텐드클래스에 run()부분이 실행되게 된다. 메인과 스레드 전용 클래스를 start() 와 run() 함수로 서로 연결해 사용한다고 이해하면 된다.

스레드의 기능들은 더욱 무궁무진하고 아직 남아있는 함수들도 매우 많다, 하지만 이해하기 어려운 개념인 만큼, 지금은 스레드의 가장 기본적인 원리와 사용법만 설명했다. 다음 기회에 스레드를 더욱 구체적으로 깊이있게 다뤄보도록 하고, 이만 포스팅을 마쳐보도록 하겠다.

profile
life

0개의 댓글