- 간만에 잠을 많이잤더니, 넘나 개운
완전탐색 / 모의고사
풀이시간: 01:10:00
...(왜이리 길어?..)
리뷰: 굳이 패턴을 정답 길이만큼 만들 필요가 없었다ㅋ..ㅋ
구현여부: 완료 ✅
작업의 개수 == 코어의 개수
처럼
보이게 한다.실제로
작업을 수행
하는 것독립적인
작업을 수행을 수행하기 위해, 개별적인 메모리 공간 호출스택(call stack)
생성종료 X
start()
를 호출되면, 실행대기
상태에 있다가 자신의 차례가 되었을 떄 실행함.start()
한번 만 호출 가능main 메서드
의 작업을 수행하는 것도 쓰레드실제로는 OS 종속적인 부분 몇 가지 존재
그중 쓰레드
가 하나이다.
⇒ JVM의 종류에 따라 쓰레드 스케줄러의 구현방법이 다를 수 있기 때문에 멀티쓰레드로 작성된 프로그램을 다른 종류의 OS에서도 충분히 테스트 해볼 필요가 있다.
JVM의 쓰레드 스케줄러에 의해서 어떤 쓰레드가 얼마동안 실행될 것인지 결정되는 것과 같이 프로세스도 프로세스 스케줄러에 의해서 실행순서와 실행시간이 결정되기 때문에 매 순간 상황에 따라 프로세스에게 할당되는 실행시간이 일정하지 않고, 쓰레드에게 할당되는 시간 역시 일정하지 않게 된다.
따라서, 쓰레드의 불확실성
염두에 두어야 한다.
쓰레드가 가질 수 있는 우선순위 범위 1~10
( 숫자▲, 우선순위▲)
쓰레드의 우선순위는 쓰레드를 생성한 쓰레드로부터 상속받음.
쓰레드를 실행하기 전
에만 우선 순위를 변경
할 수 있다.
'자바의 정석' 저자 코멘트 🧐
- 멀티코어에서는 쓰레드의 우선순위에 따른 차이가 전혀 없었다.
- 따라서 쓰레드에 높은 우선 순위를 준다고, 더 많은 실행시간과 실행기회를 갖게 될 것이라고
기대할 수 없다.
- 차라리 쓰레드에 우선순위를 부여하는 대신, 작업에 우선순위를 두어 PriorityQueue에 저장해
놓고, 우선순위가 높은 작업이 먼저 처리되도록 하는 것이 나을 수 있다.
보안상의 이유로 도입된 개념
모든 쓰레드는 반드시 쓰레드 그룹에 포함되어 있어야 한다.
쓰레드 그룹을 지정하는 생성자를 사용하지 않은 쓰레드는 기본적으로 자신을 생성한 쓰레드와 같은 쓰레드 그룹에 속한다.
우리가 생성하는 모든 쓰레드 그룹은 main 쓰레드 그룹의 하위 쓰레드 그룹
쓰레드 그룹을 지정하지 않고, 생성한 쓰레드는 자동적으로 main 쓰레드 그룹에 속함.
참조변수 없이 쓰레드 생성/실행 new Tread(ThreadGroup tg,Runnable r,String name).start()
⇒ 하지만, 가비지 컬렉터의 제거 대상이 되지는 않는다.
→ 해당 쓰레드의 참조가 `ThreadGroup`에 저장되어 있기 때문이다.
데몬 쓰레드가 아닌 일반 쓰레드의 작업을 돕는 보조적인
역할을 하는 쓰레드
무한루프
와 조건문
을 이용해서 실행 후 대기
하고 있다가 특정조건
이 만족되면 작업을 수행하고 다시 대기하도록 작성
일반 쓰레드 모두 종료 → 데몬 쓰레드 강제 자동 종료
데몬 쓰레드가 생성한 쓰레드는 자동적으로 데몬 쓰레드가 됨.
데몬 쓰레드의 예)
동기화(Synchronization)
와 스케줄링(Scheduling)
떄문이다.slee()
, joi()n
, interrupt()
, stop()
, suspend()
, resume()
, yeild()
NEW
, RUNNABLE
, BLOCKED
, WAITING, TIMED_WAITING
, TERMINATED
sleep()
에 의해 일시정지 상태가 된 쓰레드를 실행대기 상태로 변경하는 2가지 방법
지정된 시간에 도달한다.
interrupt()
가 호출돼, InterruptedException
이 발생한다.
th1.sleep(2000)
과 같이 참조변수를 이용해 호출하여도, 실제 영향은 일반적으로 main 쓰레드
Thread.sleep(2000)
과 같이 작성하는게 좋음.
- 어제 풀지 못한 알고리즘을 풀었다, 역시 안풀리면 나중에 하는 것도 답인가보다.
- 그동안 무지했던 프로세스와 스레드에 대한 전반적인 개념을 진득하게 보았다.
- 수면시간 : 3h
- 프로세스 미션 시작을 못했다.
- 학습에 있어 지금 필요한 것과 알아두면 좋은 것을 분류하지 못했다.
- 요즘 내가 부족한게 너무 많다는 생각이 든다. 언제 다 공부하나 싶다가도 해야할 일이 분명하니까 또 괜찮은 것 같고 애매모호하다. :)
- 파이로가 오늘
프로세스와 스레드
에 대해서 질의응답 세션을 줌에서 열었는데, 참여자가 50명?에 임박할 정도로 많은 인원들이 모였었다. 회의 내용의 80% 정도는 이해하지 못한 것 같지만 코드스쿼드를 함께하는 팀원들의 열정적인 분위기와 유능함을 보아서 나도 언젠간 지식나눔을 할 정도의 위치까지 도달하고 싶다는 의지와 목표가 생겼다.