thread 2

Thread 를 알아보자 - mulit vs single, PrioirtyQueue, ThreadGroup, 실행제어( 2 / 3 )

예제 소스 링크 언제 싱글쓰레드가 멀티쓰레드보다 효율적일까? 이전 게시글에도 적었지만, 프로세스는 하나또는 그 이상의 쓰레드를 가질수 있으며 하나의 쓰레드는 하나의 코어에 의해 실행 된다. 어떤 작업을 하나의 쓰레드가 처리하는 것을 싱글 쓰레드, 여러개의 쓰레드가 처리하는 것을 멀티 쓰레드라고 한다. 하나의 일을 여러명이 나누어서 하면 빨리 끝나듯 쓰레드도 여러개면 작업이 빠르게 진행 될 것 같지만 그렇지는 않다. 그 이유는 작업 전환 시간(context switcing)에 시간이 걸리기 때문이다. 작업 전환 시간(context swtiching) 프로세스 또는 쓰레드 간의 작업 전환을 의미한다. 작업 전환을 할 때 현재 진행 중인 작업의 상태나 다음에 실행해야할 위치 같은 정보를 저장하고 읽어오는 시간..

Dev/Java 2024.04.01

Thread 를 알아보자 - 프로세스와 쓰레드, 태스킹과 쓰레딩, start() vs run() ( 1 / 3 )

예제 소스 링크 프로세스와 스레드 프로세스 프로세스는 간단히 말해서 실행 중인 프로그램을 나타낸다. 프로그램을 실행하면, OS로부터 실행에 필요한 자원을 할당받아 프로세스가 된다. 프로세스는 데이터와 메모리등의 자원, 그리고 스레드로 구성되어 있다. 스레드 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 스레드이다. 그래서 모든 프로그램에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티 쓰레드 프로세스'라고 한다. 쉽게 말하면 프로세스는 회사, 스레드는 직원이라고 생각하면 된다. 하나의 프로세스가 가질 수 있는 쓰레드는 제한되어 있지 않지만 스레드가 작업을 수행하는데 개별적인 메모리공간(호출스택)을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 ..

Dev/Java 2024.03.25