아쿠의 개발 일지

[Thread] Thread 기본 본문

Programming/Java

[Thread] Thread 기본

디아쿠 2024. 6. 2. 21:57

Thread란?

프로세스 안에서 실질적으로 작업을 실행하는 단위를 말하고, 프로세스에는 적어도 한 개 이상의 스레드가 있다고 한다. Main 스레드 하나로 시작하여 추가 생성하게 되면 멀티 스레드 환경이 된다.

이러한 스레드들은 프로세스의 리소스를 공유하기 때문에 효율적이긴 하지만 개발자들에겐 문제가 많다고 한다.

 

일단 대충 연습을 해 보기 위해서 Ex001이라는 예제 Class를 만들었다.

 

그러곤 Thread1과 Thread2를 만들어서 Thread1은 Thread를 상속 받게 해 주고

Thread2는 인터페이스로 구현하기 위해 Runnable을 쓸 것이다.

Runnable은 시간 메소드를 구현 해야 에러가 나지 않는다.

 

public class Thread1 extends Thread{
    // 얘는 상속 받은 거
    @Override
    public void run() {
        // 무한 반복문을 일단 만들어줌
        while (true) {
            System.out.println("스레드 01");
        }

    }
}

 

 run이라는 메소드를 override해서 구현을 할 거다 컨트롤+o해서 고르면 된다.

 

ctrl+o 하면 이렇게 고를 수 있음... 매우 편리

public class Thread2 implements Runnable{
    // 얘는 인터페이스로 구현
    // 시간 메소드 구현 안 해서 에러나는 거임

    @Override
    public void run() {

        while (true){
            System.out.println("스레드 02");
        }

    }
}

 

이렇게 Thread1과 Thread2를 만들어두고, 이제 만들어준 Ex001로 간다.

이 친구들을 Thread로 만들어 놓으면 실행 했을 때 여러가지 작업을 동시에 할 수 있다.

 

public class Ex001 {
    public static void main(String[] args) {
        // 쓰레드를 만드는 방법

        Thread1 t01 = new Thread1();
        // 클래스 이름 변수 이름 = Thread1이라는 객체 생성
        Runnable r02 = new Thread2();
        Thread t02 = new Thread(r02);

        t02.start();
        t01.start();

        while (true){
            System.out.println("메인");

        }


    }
}

 

실행을 해 보면 계속 왔다갔다 출력을 한다. 둘다 무한 반복이 돌아가고 있기 때문에 멈출 생각을 안 한다.

 

최대한 안 겹치는 거 찾느라 힘들었다. 이렇게 되는 거다.

728x90

'Programming > Java' 카테고리의 다른 글

[SpringBoot] Entity간의 관계 설정  (3) 2024.06.23
[SpringBoot] RestController  (0) 2024.06.23
[Method] method overloading 기본(2)  (0) 2024.06.22
[Method] method Overloading 기본  (0) 2024.06.22
[Socket] 소켓 통신의 기본  (2) 2024.06.06