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();
}
}