이 게시글에서는 "김영한의 실전 자바 - 멀티스레드와 동시성" 강의를 수강하면서 얻은 것들을 기록하려고 한다. 나중에 성장한 후에 현재의 나를 되돌아볼 수 있도록, 다른 글과는 다르게 두서없이 지금의 생각을 그대로 담아 작성할 예정이다.
[공부정리] 챗봇 구매에서 동시성 문제 해결과 [공부정리] 배터리 구매에서 동시성 문제 해결에서 동시성 문제를 경험해본 경험이있다. 해당 문제들은 DB에서 동시성 문제를 해결했어야 하기 때문에 해결할 수 있었지만, 관련 공부를 진행하면서 Java에서의 동시성 처리에 대한 지식이 부족하다는 것을 알게 되었다.
그래서 이참에 김영한님의 강의로 Java의 멀티스레드와 동시성에 대한 지식을 쌓고자 강의를 수강하게 되었다.
사실 김영한님의 강의 말고도 Java의 멀티스레드와 동시성에 대한 지식을 쌓는 방법은 많다. 하지만 김영한님의 강의를 선택한 이유는 김영한님은 실무에서 겪은 이야기를 강의에 담기 때문이었다. 나는 평소 공부를 진행하며 현실적으로 이게 실무에서 어떻게 쓰일까? 라는 고민을 정말 많이한다. 김영한님은 이걸 강의에 잘 담아주셔서 정말 좋다.
각설하고, 강의는 정말 좋았다. 중간중간에 실무의 관점으로 설명해주실때마다 특히 좋았던 것 같다. 사실 나는 전공자라 운영체제 시간에 관련된 내용을 접해본 적이있어서 이해가 어렵진 않았지만, 그렇다고 쉽지는 않았던 것 같다. 특히, 스레드 풀과 Executor 프레임 워크에 대한 설명이 정말 좋았다. 이번에 프로젝트를 진행하면서 동시성 문제를 테스트하기 위해서 Executor 프레임 워크를 사용하였고, 나름? 잘 안다고 생각하였는데 강의를 들으며 Executor 프레임 워크의 다양한 기능을 접해볼 수 있어서 정말 좋았다.
또한, 원리에 대해서 자세히 공부하며 톰켓의 스레드 풀에 대해서도 궁금증을 가지게 되어서, 스스로 공부할 수 있었다. TMI로 이야기하자면 ThreadPoolExecutor과 톰켓의 스레드 풀은 작동방식이 다르다. ThreadPoolExecutor은 스레드를 전부 사용하고 있다면 대기 큐까지 모두 사용해야지 새로운 스레드를 생성하고, 톰켓의 스레드 풀은 스레드를 전부 사용하고 있다면 (물론, 커넥션까지 전부 사용하고) 새로운 스레드를 생성한다. 음.. 너무 멀리왔나...
아무튼, 정말 좋은 강의였다.