OS 6

동시성 문제 해결 synchronized 메서드

* 해당 포스팅은 김영한님의 고급 자바편 강의를 수강 후 해당 내용을 정리한 포스팅입니다. 안녕하세요 이제 가을이 다가오는데 아직까지도 날씨가 덥고 올해 추석은 최고 35도까지 올라간다고 하네요..항상 건강하시고 즐거운 연휴 보내시길 바랍니다 ㅎㅎ 지난 포스팅에서는 동시성 이슈에 대해 알아보았습니다.동시성 이슈가 뭔지, 예제를 통해서 동시성 이슈는 정말 엄청난 버그를 확인했죠 오늘은 이어서 그렇다면 자바진영에서는 이 동시성 문제를 어떻게 해결했는지 알아보시죠!임계 영역이런 문제가 발생한 근본 원인은 여러 스레드가 함께 상요하는 공유 자원을 여러 단계로 나누어 사용하기 때문입니다.우리가 지난 시간에 간단한 출금예제를 통해 동시성 이슈를 살펴보았는데 해당 예제를 다시 가져오보도록 하겠습니다. 출금() { ..

OS 2024.09.11

동기화 - synchronized (동시성 이슈)

* 해당 포스팅은 김영한님의 자바 고급편 강의를 완강 후 저만의 방식으로 정리한 내용입니다.  안녕하세요 지난 포스팅에는 메모리 가시성에 대해 이야기하고 어떤 문제를 가지고 있는지그리고 메모리 가시성 문제를 자바에서는 어떻게 해결하는지 알아보았습니다. 오늘은 메모리 가시성 문제보다 더 큰 문제인.. 동기화라는 주제에 대해 이야기 해보고자합니다. 동기화 synchronizedOS 카테고리 Java 프로세스와 스레드 포스팅 편에서 멀티스레드를 활용하면 성능 최적화를 이뤄낼 수 있다고 했습니다.https://junghan49.tistory.com/19 Java 프로세스와 스레드* 해당 포스팅은 김영한님의 자바 고급 편에 있는 멀티스레드 영상을 보고 정리한 내용입니다. 개요처음 자바를 학습할때 이 코드 제일 먼..

OS 2024.09.10

자바 volatile, 메모리 가시성 문제 해결

* 이 포스팅은 김영한님의 자바 고급편을 보고 정리한 내용입니다. 안녕하세요 지난 포스팅까지는 메모리 가시성에 대해서 포스팅을 했습니다.메모리가 가시성의 정의 부터 시작해서 실제 멀티스레드 환경에서 스레드들이 공유하는 메모리에 어떻게 접근하지는 직접확인했고캐싱 메모리, 메인 메모리의 개념도 학습했습니다, 그리고 자바의 메모리 가시성 문제까지 확인했습니다. 오늘은 지난 포스팅에 이어 자바에서는 이런 메모리 가시성문제를 어떻게 해결했는지그리고 어떻게 해결할지에 대해 정리하는 시간을 가져보고자 합니다. 자바의 volatile지난 포스팅을 통해 자바에서 발생하는 메모리 가시성 근본문제를 파악했습니다각 스레드마다 같은 메모리를 참조하는것이 아닌 성능향상을 위해 캐싱메모리를 참조했고 이로 인해서 메모리 가시성 문제..

OS 2024.09.09

OS 스레드의 예외 처리

* 해당 포스팅은 김영한님의 자바 고급편 스레드 강의 영상을 보고 정리한 포스팅입니다. 안녕하세요 지난 포스팅에 이어서 오늘은 스레드의 예외 처리에 대해서 이야기 해보고자 합니다. 우선 스레드에서 예외 처리를 진행하기 전에 자바의 예외에 대해서 약간의 학습을 진행한다면스레드의 예외처리를 어떻게 하면 깔끔하게 처리할 수 있을지 고민할 수 있을거 같아 자바의 예외 객체부터 살펴보는 시간을 가져보도록 하겠습니다.자바의 예외 계층도에러와 예외를 간단하게 정의부터 시작해보겠습니다.더보기1.  프로그램의 오류- 컴파일 오류: 개발자가 IDE 에서 개발을 할 때 잘못된 문법을 사용할때 컴파일에서 미리 개발자에게 에러를 알리는 것입니다.- 런타임 에러: 실행 할 때 발생하는 에러 입니다.- 논리적 에러: 작성 의도와 ..

OS 2024.09.03

Java 스레드 Deep Dive

* 해당 포스팅은 김영한님의 자바 고급편 스레드 강의를 완강 후 해당 내용을 정리한 글입니다. 지난 포스팅은 컨텍스트 (문맥전환)에 학습하고 해당 내용을 정리하는 시간을 가졌는데요오늘은 지난 포스팅을 이어 자바에서 제공하는 스레드 기본정보와 생명주기에 대해서 정리하겠습니다. 스레드 기본 정보자바에는 Thread 클래스가 존재합니다, 해당 클래스를 통해 스레드를 생성하고 관리하는 기능을 제공하는데요Thread가 제공하는 정보들을 한번 간단하게 정리하겠습니다.package thread.control;import thread.start.HelloRunnable;import static util.MyLogger.log;public class ThreadInfoMain {public static void main..

OS 2024.09.02

[컨텍스트 스위칭] 스레드 2번째 이야기

웹 서버의 성능을 최적화 하는 방법으로 멀티 스레드를 활용하면 가능하다고 포스팅을 올렸는데사실 멀티태스킹이 반드시 효울적이지만은 않습니다. 오늘은 멀티스레드 개념에서 어떤 상황에서 멀티 스레드를 활용하면 오히려 성능이 떨어지는 케이스를 살펴보고 멀티스레드를 올바르게 활용할 수 있는 판단력을 키워보고자 합니다. 개요프로세스, 스레드 개념이 익숙하지 않는 독자들은 컨텍스트 스위칭 (문맥 교환) 개념이 익숙하지가 않을 것 같아사람의 멀티 태스킹을 비유로 어떤 케이스에 오히려 비효율적인 성능이 나오는지 확인해보겠습니다. 1. 사람의 멀티태스킹  만약 어떤 개발자가 프로그램 A를 개발하고 있다고 가정해보겠습니다.이때 기획자가 갑자기 프로그램 B에 급한 이슈 상황이 발생해 바로 수정해달라고 합니다.프로그램 A의 개..

OS 2024.08.31