> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.10.05.md).

# 2022.10.05

일일 회고 54회차

## 할일 및 한일&#x20;

* [x] 모바일 프로그래밍 실습&#x20;
* [x] 이것이 자바다 12장(멀티 스레드) 공부 및 notion 정리(30%)&#x20;

## 경험 및 배움

오늘은 오전에 모바일 프로그래밍 전공 수업을 듣고 실습을 한 후, 오후에는 이것이 자바다 스레드 부분을 공부 및 notion 정리를 하였다.

### 이것이 자바다 12장(멀티 스레드)&#x20;

스레드 부분은 운영체제를 공부할 때 공부를 했던 부분이라 공부하기 수월할 줄 알았는데 전혀 반대였다. 이론을 코드로 표현하려니 정말 어렵고 복잡한 것 같다.

우선 멀티 스레드란 **한 프로세스 내에 스레드를 여러 개 만들어, 여러 개의 실행 흐름이 생긴다는 의미**이다.

<figure><img src="https://554097319-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXOFWKNTyvL7RYCd4zX33%2Fuploads%2FiP7hV9bZUsYwFE40uBqq%2Fimage.png?alt=media&amp;token=e35bf3bf-cb94-4a11-8894-fba649f30226" alt=""><figcaption></figcaption></figure>

멀티 스레드의 예를 들면 메신저, 미디어 플레이어 등이 있다. 메신저는 한 프로세스 내에서 채팅 기능, 파일 전송 기능 등을 제공하고 미디어 플레이어는 동영상 재생, 음악 재생등의 여러 기능을 제공한다.

멀티 스레드는 **대용량 데이터의 처리 시간을 줄이기 위해서 데이터를 분할해서 병렬로 처리할 때, 다수 클라이언트의 요청을 처리하는 서버를 개발할 때도 사용**된다고 한다.

멀티 스레드는 개발을 할 때 꼭 필요한 기능이라고 하니 꼭 이해하고 숙지해야 할 것 같다.

그리고 멀티 스레드는 **동시성, 병렬성으로** 실행된다고 한다. 또한 스레드의 개수가 코어의 수보다 많을 경우 -> **스레드 스케줄링**으로 어떤 순서에 의해 동시성으로 실행할 것인가를 정해야 한다.

스레드 스케줄링에는 여러 방법이 있지만, 이 책에는 **라운드 로빈 방식과 우선 순위 고려 방식**이 나왔다.

* **라운드 로빈 방식** : 시간 할당량을 정하여 하나의 스레드를 정해진 시간만큼 실행하고, 다른 스레드를 실행하는 방식
* **우선 순위 방식** : 우선 순위를 부여하여 우선 순위가 높은 스레드가 실행 상태를 더 많이, 먼저 가지도록 하는 방

또한 공유 객체를 사용할 때 다른 스레드가 **임계 영역(critical section)**&#xC5D0; 들어가지 못하게 막는 **`synchronized` 메소드와 블록, 스레드 상태(실행 상태, 실행 대기 상태, 종료 상태 등)**&#xC5D0; 대해 학습하고 있다.&#x20;

<figure><img src="https://554097319-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXOFWKNTyvL7RYCd4zX33%2Fuploads%2FbIChKS8OFB7U3oZ7QSpo%2Fimage.png?alt=media&amp;token=be7a0b5d-876e-48f9-8b40-2a68608dbcfa" alt=""><figcaption></figcaption></figure>

자세한 정리는 notion 링크를 첨부한다.

{% embed url="<https://jinwonyoon.notion.site/Chapter-12-89e65d5688274eb790bb604f29dd86c6>" %}

## 개선 및 목표&#x20;

* 시간을 좀 더 알차게 쓰자. 요즘 들어 그냥 보내는 시간이 많은 것 같다.&#x20;
