728x90 스레드4 Java - Thread 동시성 문제3 (Synchroized) 안녕하세요. Thread 동시성 문제 3편 시작하겠습니다. 동시성 문제 개념과 원인은 앞서 다룬 포스트를 참고하시면 좋을 것 같습니다. https://getthismoment.tistory.com/155 Synchroized 동시성 문제를 해결하는 방법으로 synchroized를 활용하면 됩니다. synchroized 를 사용해서 스레드에 lock 을 걸어 동기화를 시킵니다. lock을 얻은 스레드의 synchroized가 진행되는 동안 다른 스레드는 대기 상태에 놓입니다. lock을 거는 방식을 사용하기 때문에 당연히 성능은 떨어지게 됩니다. 대신 동기화를 통해 스프링에서 객체 주입 받아온, 싱글톤으로 구현된 객체가 멀티 스레드 내에서 Thread Safe를 보장받을 수 있게 됩니다. 동기화에 관한 용.. 2022. 5. 4. Java - Thread 동시성 문제2 (ThreadLocal ) 이전 글에 이어서 계속해서 Thread 동시성 문제를 보겠습니다. 이번에는 동시성 해결방법을 다루어보겠습니다. https://getthismoment.tistory.com/155 Thread 동시성 문제 해결 방법으로 우선 ThreadLocal 을 살펴보겠습니다. ThreadLocal ThreadLocal 사용방법은 주입해서 사용할 서비스 로직에 구현하면 됩니다. ThreadLocal은 여러 스레드가 실행되어도 각 스레드에서 독립된 실행을 보장하는 방법입니다. public class BankBook { private int balance = 500; // 남은 금액 private ThreadLocal threadLocal = new ThreadLocal(); // 입금 public void deposit.. 2022. 5. 4. Java - Thread 동시성 문제1 이전 포스트와 이어서 이번에도 스레드를 다루어보겠습니다. https://getthismoment.tistory.com/152 스레드의 정의는 알겠는데 그런데 왜 스레드를 배워야할까요? Thread를 왜 배워야할까? 스레드를 배워야하는 이유는 크게 다음과 같습니다. 1. 우리는 멀티 스레드를 지원하는 자바를 사용하고 있습니다. 2. 스프링의 객체관리 기능(빈 등록 및 빈의 모든 생명주기 관리)이 싱글톤 패턴을 베이스로 하고 있습니다. 3. 객체 주입을 통해 가져온 객체를 수정하게 된다면 그 객체는 멀티 스레드에서 동기화를 보장할 수 없습니다. Thread Safe 멀티 스레드의 서로 다른 스레드에서 같은 메소드를 호출해도 동일한 결과를 보장하는 것. 즉, 스프링에서 Rest api를 통해서 함수를 호출하게.. 2022. 5. 4. Jave - Thread 개괄 안녕하세요. Thread 와 Thread 동시성 문제에 관해서 시리즈화해서 포스트하려고 합니다. 이번 포스트에서는 Thread가 무엇이고 동시성 문제가 왜 발생하는지 알아보겠습니다. Thread 란? Thread는 프로세스 내에서 실행 되는 실행의 단위입니다. 스프링에서 실행되는 public static void main(String[] args) { } 메소드도 사실 유저 스레드의 중에 하나입니다. 알게 모르게 유저 스레드를 만들어서 실행하고 있는 셈이죠. 일반적으로 우리는 멀티 코어에서 멀티 스레드를 사용하게 될 것입니다. 멀티 코어는 CPU의 코어를 말하는 것이고 여러 작업장이 존재하는 것으로 비유할 수 있습니다. 멀티 스레드는 작업장 하나에서 번갈아가면서 스레드를 수행하는 것입니다. 또한 멀티 .. 2022. 5. 3. 이전 1 다음 728x90