program → process → thread
프로그램은 파일로서 보조 메모리(SSD, HDD 등)에 저장되어 있고 프로세스는 컴퓨터의 자원을 할당 받아 실행하고 있는 프로그램이 된다. 스레드는 조금 더 자세히 들어가 이 프로세스 안에 구성되어서 실제로 작업을 수행하고 있는 일꾼이다. 요즘 시대는 멀티 프로세싱, 멀티 스레딩이라고 해서 여러 가지 작업을 동시에 수행하는 수준까지 되었다.
- 병행/동시성(concurrent): 여러 작업을 시분할로 함께 처리하여 겉으로 봐서는 동시에 수행되는 것처럼 보인다
- 병렬(parallel): 큰 작업을 여러 개의 작은 작업으로 쪼개어 동시에 처리
여러 스레드가 동시에 많은 작업을 처리하기 때문에 공유하고 있는 데이터에 대해 동기화 처리가 필수로 요구된다.
- synchronized 키워드 - 메서드와 블럭에 선언
- wait(), notify()
- Lock, Condition
- volatile
- fork & join
변하는 것과 변하지 않는 것을 분리하는 것이 중요하다. 변하는 것은 상속을 통해 제공하거나, 매개변수로 바뀌는 부분을 전달하는 방법으로 나눌 수 있다. 이때 변하지 않는 것은 Template이라고 부른다.
- 변하는 것
- 상속으로 제공 - Template Method Pattern
- 매개변수로 제공 - Strategy Pattern ex. sort(Comparator c)
- 변하지 않는 것 (= Template)
'패스트캠퍼스 백엔드 부트캠프 3기 > JAVA' 카테고리의 다른 글
[JAVA] 입출력(I/O) (0) | 2025.02.06 |
---|---|
[JAVA] 제네릭스 (0) | 2025.01.20 |
[JAVA] 컬렉션 프레임워크 (0) | 2025.01.20 |
[JAVA] 날짜와 시간 객체, 형식화 클래스 (0) | 2025.01.20 |
[JAVA] java.lang 패키지 (0) | 2025.01.14 |