스레드(5)
-
프로세스(Process)와 스레드(Thread)의 차이 및 개념 정리
컴퓨터 과학에서 프로세스는 실행 중인 프로그램의 인스턴스이고 스레드는 프로세스 내의 별도 실행 경로이다. 프로세스와 스레드는 모두 코드를 실행하고 작업을 수행하는 데 사용되지만 몇 가지 중요한 차이점이 있다. 리소스 소유권 (Resource ownership) 각 프로세스에는 프로세스가 소유하고 관리하는 메모리, 파일 핸들 및 열린 소켓과 같은 고유한 리소스 세트가 있다. 반면 스레드는 상위 프로세스의 리소스를 공유하는 경량 실행 경로이다. 메모리 관리 (Memory management) 프로세스에는 다른 프로세스로부터 보호되는 별도의 메모리 공간이 있다. 이는 각 프로세스가 실행 중인 데이터 및 코드의 별도 사본을 가지고 있음을 의미한다. 반면 스레드는 상위 프로세스의 메모리 공간을 공유하므로 상위 프..
2022.12.31 -
[Java] 스레드(Thread) - wait(), notify() 활용 예제
리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread가 wait() 상태가 된다 wait() 상태가 된 Thread는 notify()가 호출될 때까지 기다린다 유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 Thread 중 무작위로 하나의 Thread를 재시작한다 notifyAll()이 호출되는 경우 wait() 하고 있는 모든 Thread가 재시작된다 notifyAll()이 호출되는 경우 유효한 리소스만큼의 Thread만이 수행되며 자원을 갖지 못한 Thread는 다시 wait() 상태로 돌아간다 자바에서는 notifyAll() 메서드의 사용을 권장한다 도서관에 자리가 부족해 기다리는 경우를 가장한 코딩 예제 notify()를 사용하는 경우 imp..
2022.02.27 -
[Java] 멀티 스레드 동기화(multi-threaded synchronization)
임계 구역(critical section)과 세마포어(semaphore) critical section은 여러 개의 thread가 동시에 접근할 수 없는 영역이다 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고 나머지 thread들은 대기(blocking) 상태가 된다 semaphore를 얻은 thread 만이 critical section에 들어갈 수 있다 Kh 클래스와 Ys 클래스가 동시에 Bank 클래스에 접근하는 예제 package ch22; class Bank { private int money = 5000; public synchronized void saveMoney(int ..
2022.02.27 -
[Java] 스레드(Thread) 우선순위 - (MIN, NORM, MAX)_PRIORITY
자바 Thread 클래스에는 스레드의 우선순위를 정할 수 있는 메서드가 있다. Thread.MIN_PRIORITY(=1) ~ Thread.MAX_PRIORITY(=10) 디폴트 우선순위 : Thread.NORM_PRIORITY(=5) 우선순위가 높아진다고 무조건 높아지는 것이 아니라 높아질 확률이 올라가는 것이다 setPriority() / getPriority() Thread 우선순위 예제 class PriorityThread extends Thread { public void run() { Thread t = Thread.currentThread(); System.out.println(t + "start"); System.out.println(t.getPriority() + "end"); } } pu..
2022.02.27 -
[Java] 스레드(Thread) 개념 정리 - sleep(), wait(), join()
스레드의 개념 프로세스(process)란? 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. 스레드(thread)란? 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다. 멀티 스레딩(multi-threading) 하나의 프로세스 내에서 둘 이상의 th..
2022.02.27