😌2022.10.05

일일 회고 54회차

할일 및 한일

경험 및 배움

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

이것이 자바다 12장(멀티 스레드)

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

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

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

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

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

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

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

  • 라운드 로빈 방식 : 시간 할당량을 정하여 하나의 스레드를 정해진 시간만큼 실행하고, 다른 스레드를 실행하는 방식

  • 우선 순위 방식 : 우선 순위를 부여하여 우선 순위가 높은 스레드가 실행 상태를 더 많이, 먼저 가지도록 하는 방

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

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

개선 및 목표

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

Last updated