Java Concurrent Programming - Synchronizers

About Java Concurrent Programming, Synchronizers article

프롤로그 이번에 다룰 내용은 java.util.concurrent package에서 제공하는 Synchronizer(동기자)들에 대한 내용이다. 동기자라 비 동기화된 각 Thread의 작업을 동기화 시키는데 그 목적이 있다. 하나의 일을 여러 스레드가 나누어 수행을 하고 이를 모아서 하나의 결과를 얻는 집계와 같은 프로세스를 예로 들 수 있다. JAVA 1.5 이전의 전통적인 방법으로 thread를 다룬다면 object.wait()로 프로세스를 멈추게... [Read More]

Java Concurrent Programming - Executor framework

About Java Concurrent Programming, Executor framework article

프롤로그 이번 글에서 다루려고 하는 Executor framework는 지금까지 작성해온 스레드 관련된 글에서 예제 코드를 통해 이미 많이 등장했던 내용이다. 전통적인 방법으로 Runnable을 구현하여 Task를 만들고 start()를 호출하여 새로운 스레드를 만드는 방법을 사용하다 보면 자칫 너무 많은 스레드를 만들어 오히려 효율을 떨어뜨리는 문제가 있다. 이런 문제의 해결을 위해 JAVA 1.5에서 처음... [Read More]

Java Concurrent Programming - Atomic

About Java Concurrent Programming, Atomic article

프롤로그 전편에서 다루었던 가시성과 이번에 다루려고 하는 “원자성”이라는 주제가 Multi-Thread 상황에서 Thread간 공유 메모리 이슈를 발생시킨 다는 점에서 공통분모를 가지고 있고 서로간의 상호작용을 잘 염두해두어야 한다는 것은 사실이다. 그렇지만 시스템 관점에서 보면 이 두 개념은 조금 다른 곳에 존재한다. 가시성은 CPU - Cache - Memory관계상의 개념이다. 반면 원자성은 한 줄의... [Read More]

Java Concurrent Programming - Visibility

About Java Concurrent Programming, Visibility article

프롤로그 가시성과 원자성 이 두가지를 이해 하면 Multi-thread프로로그램을 작성할 때 무엇을 주의해하는지 명확해진다. 또 다른 표현으로 설명 하자면 단일 Thread 프로그램에서는 가시성과 원자성을 괘념치 않아도 프로그램 작성하는데 문제가 없다. 그렇다고 해서 가시성과 원자성이 Multi-thread를 할 때만 뚜둥 나타나는 개념은 아니라는점 명확히 밝혀둔다. 하드웨어를 설계한 사람들에 의해 만들어진 원래 컴퓨터 내의... [Read More]

Java Concurrent Programming - Overview

About Java Concurrent Programming, Overview page

프롤로그 프로그래밍이라는 것을 시작한 이래로 늘 무겁게 다가오는 주제가 Multi-Thread였다. 어떤 언어로 하던간에 어렵고 난해 했다. 그렇기에 늘 내가 알고 하고있구나 하는 느낌 보다는 어디서 주섬 주섬 주워온 코드로 현실에 Issue들을 해결하기급급 했다. 헌데 지금은 양상이 다르다. 서버 프로그램밍을 하고 있는 시점에 "아 됐어, 돌아가!" 그리고 다음진도를 빼기에는 너무 불안하다.... [Read More]