TIL/Web Back

[Sparta] 내일배움캠프 6일차 TIL

헤르로우워르드 2024. 4. 26. 23:45

오늘의 핵심 키워드
  • 프로세스와 쓰레드
  • 모던 자바

 

프로세스와 쓰레드

 

프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위

쓰레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위

 

- 멀티 쓰레드

Java는 메인쓰레드가 main() 메서드를 실행시키면서 시작이 됩니다
싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행되는 것을 말함
Java 프로그램의 경우 main() 메서드만 실행시켰을 때 이것이 싱글 쓰레드

멀티 쓰레드: 프로세스 안에서 여러 개의 쓰레드가 실행되는 것을 말함
Java 프로그램은 메인 쓰레드 외에 다른 작업 쓰레드들을 '생성' 하여 여러개의 실행흐름을 만들수 있다

 

멀티 쓰레드 장점

  • 여러개의 작업을 동시에 할 수 있어서 성능향상
  • 스택을 제외한 모든 영역에서 메모리 공유가능이기에 자원을 보다 효율적으로 사용할 수 있음
  • 응답 쓰레드와 작업 쓰레드를 분리하여 빠르게 응답 줄수있음 (비동기)

멀티 쓰레드 단점

  • 동기화 문제 발생가능
  • 교착 상태(데드락) 발생가능

쓰레드 사용 (러너블 인터페이스)

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

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

        thread.start();
    }
}

class TestRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i <100; i++) {
            System.out.print("$");
        }
    }
}

 

람다식을 통한 쓰레드 실행

public class Main {
    public static void main(String[] args) {
        Runnable task = () -> {
            int sum = 0;
            for (int i = 0; i < 50; i++) {
                sum += i;
                System.out.println(sum);
            }
            System.out.println(Thread.currentThread().getName() + " 최종 합 : " + sum);
        };

        Thread thread1 = new Thread(task);
        thread1.setName("thread1");
        Thread thread2 = new Thread(task);
        thread2.setName("thread2");

        thread1.start();
        thread2.start();
    }
}