[JAVA] Thread - 1

권재현·2024년 10월 14일

JAVA

목록 보기
3/11

정의

  • 프로세스보다 더 작은 실행 단위이다.

  • 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.

  • 둘 이상의 스레드를 동시에 실행할 경우, 이러한 방식을 멀티스레드라고 부른다.

  • 두 개의 스레드를 실행하고 있는 하나의 프로세스를 도식화 시킨것이다.

  • 프로세스안에 여러 스레드들이 있고 실행을 위한 프로세스 내 주소공간이나 메모리공간을 공유한다.

  • JVM에서도 스레드가 실행된다. 우리가 사용하는 Main() 메소드가 Java의 메인 스레드이다.

JVM 싱글 스레드 && 멀티 스레드

싱글스레드

  • Java는 main() 메소드를 실행시키면 시작되는 메인스레드가 싱글 스레드이다.
  • JVM의 메인 스레드가 종료되면, JVM도 같이 종료된다.

멀티스레드

  • 메인 스레드외에 다른 작업 스레드들을 생성하여 여러개의 실행 흐름을 만들 수 있다.
  • 장점 :
    • 여러개의 스레드를 통해 여러개의 작업을 동시에 진행할 수 있어 성능이 향상될 수 있다.
    • 프로세스의 자원을 공유하기 때문에 사용되는 자원을 효율적으로 줄일 수 있다.
    • 스레드 분리를 통한 빠른 응답이 가능하다
  • 단점 :
    • 자원 공유를 함으로써 작업을 처리하기 때문에 자원을 서로 사용하려다가 충돌이 발생하는 동기화 문제가 발생할 수 있다.
    • 둘 이상의 스레드가 서로의 자원을 원할때, 서로의 작업이 종료되기만 기다리는 교착 상태에 빠져 작업을 더 진행하지 못할 수 있다.

스레드 사용법

  • 간단하게 JAVA에서 스레드를 사용하는 방법을 알아보자, 크게 2가지 방법이 있다.
public class Main {
    public static void main(String[] args) {
        TestThread thread = new TestThread();
        thread.start();
    }
}

class TestThread extends Thread { //Java에서 제공하는 Class Thread를 상속받아 사용한다.
    @Override
    public void run() {
        for (int i = 0; i <100; i++) {
            System.out.print("*");
        }
    }
}
public class Main {
    public static void main(String[] args) {

        Runnable run = new TestRunnable();
        Thread thread = new Thread(run);

        thread.start();
    }
}

class TestRunnable implements Runnable { //Java에서 제공하는 인터페이스 Runable을 상속받아 사용한다.
    @Override
    public void run() {
        for (int i = 0; i <100; i++) {
            System.out.print("$");
        }
    }
}

마치며..

  • 이번에는 간단하게 스레드의 정의와 사용방법에 대해서만 알아봤다.
  • 다음 글에서는 구체적인 스레드의 활용 방법 및 상태 등에 대해 작성해보고자한다.

출처

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)

profile
여전히 헤매이고 있습니다.

0개의 댓글