지난 포스팅에서 Node.js의 worker_threads 모듈을 통해 이제 자바스크립트에서도 멀티 쓰레딩이 가능하다는 것을 배웠는데요. 이번 포스팅에서는 워커 쓰레드 풀링(pooling)을 도와주는 라이브러리인 Piscina에 대해서 알아보겠습니다. Piscina란? 상용 애플리케이션을 개발할 때는 Node.js의 worker_threads 모듈을 그대로 쓰기는 곤란한 경우가 많은데요. 필요할 때 마다 매번 새로운 워커 쓰레드를 생성하면 서버에 부하를 주어 오히려 성능을 떨어뜨릴 수도 있죠. 그래서 쓰레드 풀(pool)을 사용하여
worker_threads는 싱글 쓰레드 언어로 알려진 자바스크립트로도 멀티 쓰레드 프로그래밍을 가능하게 해주는 Node.js의 내장 모듈입니다. 이번 포스팅에서는 worker_threads 모듈을 사용하여 어떻게 멀티 쓰레드 프로그래밍을 할 수 있는지 예제를 통해서 설명드리겠습니다. 싱글 쓰레드의 한계 자바스크립트는 태성적으로 하나의 쓰레드로 동작하는 여러 작업을 처리할 수 있는 비동기 프로그래밍 언어였는데요. 이러한 특징은 작은 하드웨어 리소스로 여러 개의 IO 작업을 동시에 처리하는데 유리했으며 특히 브라우저 환경에서 빛을 발
본 포스팅는 오라클 자바 튜토리얼의 Pausing Execution with Sleep와 Interrupts, Joins, The SimpleThreads Example를 번역하였습니다. Sleep으로 실행 중지하기 Thread.sleep() 메소드는 현재 쓰레드가 일정 기간동안 실행을 중지시킵니다. 이것은 해당 애플리케이션 또는 시스템 상에서 돌고 있는 다른 애플리케이션 내의 다른 쓰레드들에게 프로세서를 이용 가능하도록 만들기 위한 효율적인 방법입니다. sleep() 메소드는 다음 예제와 같이 속도 조절을 위해서도 사용될 수 있습
본 포스팅는 오라클 자바 튜토리얼의 Thread Objects와 Defining and Starting a Thread를 번역하였습니다. 쓰레드 객체 모든 쓰레드는 Thread 클래스의 인스턴스와 관계를 갖습니다. 동시 애플리케이션(concurrent application)을 개발하기 위해서 쓰레드 객체를 사용하는데는 두 가지 기본 전략이 있습니다. 쓰레드의 생성과 관리를 직접 제어하기 위해서, 애플리케이션이 비동기 작업이 필요할 때 마다 단순히 Thread 클래스의 인스턴스를 만들 수 있습니다. 응용 프로그램으로 부터 쓰레드 관리
본 포스팅는 오라클 자바 튜토리얼의 Processes and Threads를 번역하였습니다. 동시 프로그래밍(Concurrent Programming)에는 프로세스와 쓰레드, 이 두가지 기본 실행단위가 있습니다. 자바 프로그래밍 언어에서는 동시 프로그래밍은 주로 쓰레드와 관련이 있지만 프로세스 또한 중요합니다. 컴퓨터는 보통 여러 개의 활성화된 프로세스와 쓰레드를 가지고 있습니다. 이것은 심지어 동시에 하나의 쓰레드 밖에 실제로 처리할 수 없는 싱글 코어를 가진 시스템에서도 마찬가지입니다. 싱글 코어의 처리 시간은 운영체제의 시분활
자바에서 쓰레드를 작성하는 2가지 방법에 대해서 알아보겠습니다. Thread 클래스 확장하기 첫번째 방법으로 java.lang.Thread 클래스를 확장할 수 있습니다. Thread 클래스에는 상당히 많은 메소드가 있는데요. 그 중에서 run() 이라는 메소드만 오버라이드해주면 됩니다. 쓰레드마다 수행 시간을 다르게 하여 현실과 비슷한 상황을 연출하고 싶었습니다. 그래서 Thread.sleep() 메서드를 이용해여 1초 이상 6초 미만의 랜덤 딜레이를 주었습니다. 그리고 각 쓰레드의 시작과 종료 시점에 Thread.currentTh