패스트캠퍼스 백엔드 부트캠프 3기/JAVA

[JAVA] 스레드

hail2y 2025. 1. 20. 16:15

program → process → thread

프로그램은 파일로서 보조 메모리(SSD, HDD 등)에 저장되어 있고 프로세스는 컴퓨터의 자원을 할당 받아 실행하고 있는 프로그램이 된다. 스레드는 조금 더 자세히 들어가 이 프로세스 안에 구성되어서 실제로 작업을 수행하고 있는 일꾼이다. 요즘 시대는 멀티 프로세싱, 멀티 스레딩이라고 해서 여러 가지 작업을 동시에 수행하는 수준까지 되었다. 

 

  • 병행/동시성(concurrent): 여러 작업을 시분할로 함께 처리하여 겉으로 봐서는 동시에 수행되는 것처럼 보인다  
  • 병렬(parallel): 큰 작업을 여러 개의 작은 작업으로 쪼개어 동시에 처리

여러 스레드가 동시에 많은 작업을 처리하기 때문에 공유하고 있는 데이터에 대해 동기화 처리가 필수로 요구된다. 

  1. synchronized 키워드 - 메서드와 블럭에 선언
  2. wait(), notify()
  3. Lock, Condition
  4. volatile 
  5. fork & join

변하는 것과 변하지 않는 것을 분리하는 것이 중요하다. 변하는 것은 상속을 통해 제공하거나, 매개변수로 바뀌는 부분을 전달하는 방법으로 나눌 수 있다. 이때 변하지 않는 것은 Template이라고 부른다. 

  • 변하는 것
    • 상속으로 제공 - Template Method Pattern
    • 매개변수로 제공 - Strategy Pattern ex. sort(Comparator c)
  • 변하지 않는 것 (= Template)