쓰레드

    [Java] 쓰레드의 동기화

    🔍 쓰레드의 동기화 멀티쓰레드 프로세스의 경우 같은 자원을 여러 쓰레드에서 공유하여 사용하기 때문에, 예상치 못한 결과를 얻을 수도 있다. 예를 들어 돈을 인출하는 과정을 두 개의 쓰레드 작업으로 생각해보자. 현재 3000원이 통장 잔고에 있고, 쓰레드 A는 3000원 인출을 요청한다. 이때, 쓰레드 B도 1000원을 인출 요청한다. 이 경우에 쓰레드 A가 deposit -= money 를 실행하기 전에 쓰레드 B가 deposit >= money 구문을 실행한다면 deposit이 마이너스가 될 것이다. public class BankAccount { private int deposit; public void withdraw(int money) { if(deposit >= money) { deposit -..

    [Java] 쓰레드 완벽 정리

    [Java] 쓰레드 완벽 정리

    🔍 프로세스와 쓰레드 프로세스란 '실행중인 프로그램'을 말한다. 우리가 프로그램을 실행시키면 OS(윈도우, Mac 등)는 프로그램 실행에 필요한 데이터와 메모리 등의 자원을 할당한다. 프로세스는 이렇게 할당 받은 자원과 쓰레드로 구성되어 있다. 쓰레드는 '프로세스가 할당 받은 자원을 활용하여 실제 작업을 이행하는 존재' 를 말한다. 쓰레드의 생성에는 제한이 없지만, 작업을 수행하기 위한 메모리 공간을 필요로 한다. 쓰레드는 프로세스가 가지고 있는 자원을 할당받기 때문에 프로세스의 메모리 한계치까지만 생성할 수 있다. 🔍 멀티 태스킹과 멀티 쓰레딩 우리는 문서 작업을 하면서 동시에 유튜브 음악을 감상할 수 있다. 이는 윈도우와 같은 운영체제는 멀티태스킹을 제공하기 때문에 가능한 일이다. 멀티 태스킹은 두 ..