Thread 6

ExecutorService ExecutorService는 재사용이 가능한 ThreadPool로 Executor 인터페이스를 확장하여 Thread의 라이프사이클을 제어합니다. ExecutorService 인터페이스는 종료를 관리하는 방법과 비동기 작업의 진행을 추적하기 위한 실행자를 구현하기 위해 필요한 인터페이스입니다. 기본적으로 Thread를 활용하여 다수의 작업을 비동기적으로 수행한다는 것은 매우 어렵습니다. 왜냐하면 우선순위의 문제, 생성과 제거에 대한 핸들링과 같은 문제를 직접 관여하는 것이 굉장히 어렵고 불편한 작업이기 때문입니다. 하지만 이러한 부분을 신경 쓰지않고 편하게 추상화한 것이 ExecutorService입니다. ExecutorService에 Task를 지정해주면 가진 ThreadPool을 활용하여 Task를 .. Language/Java 2023. 2. 16.
Executor Executor 인터페이스는 Java의 Util의 Concurrent 패키지에 위치하는 인터페이스로 Runnable한 Task를 실행하는 개체입니다. Executor라는 이름에 맞게 단순히 실행을 위한 인터페이스입니다. 이 인터페이스의 역할을 작업을 제공하는 코드와 작업을 실행하는 매커니즘의 커플링을 제거해주는 역할을 합니다. 사용방법으로는 일반적으로 Thread를 명시적으로 작성하는 대신 Executor를 사용합니다. 예를 들어, 각 Task에 대해 새로운 Thread의 start() 함수를 호출하는 대신 다음을 사용할 수 있습니다. Executor executor = anExecutor(); executor.execute(new RunnableTask1()); executor.execute(new R.. Language/Java 2023. 2. 15.
Process & Thread Process Process란 메모리를 할당받아 컴퓨터에서 연속적으로 실행중인 Program이라고 할 수 있습니다. OS(Operating System)로부터 시스템 자원을 할당 받습니다. Process는 독립된 메모리 영역에 Code, Data, Stack, Heap 구조를 가지고 있습니다. Process는 최소 1개의 Thread를 가지고 있습니다. (Main Thread) Process가 다른 Process의 자원에 접근하려면 IPC와 같은 통신을 이용할 수 있습니다. Thread Process 내에서 실행되는 흐름의 단위를 의미합니다. Process로부터 자원을 할당 받습니다. Process 내에서 Stack만을 따로 할당받고 Code, Data, Heap 영역은 공유합니다. 공유 자원이 존재하기.. Computer Science/Programming 2023. 2. 7.
Thread Pool Thread Pool이란 Thread를 미리 만들어두는 공간이라고 할 수 있습니다. Thread는 동일한 메모리 영역에서 생성되고 관리되고 생성에 많은 리소스를 요구합니다. 모든 요청에 따라 Thread를 무제한적으로 생성한다면 Memory의 사용량이 증가하고 Context-Switching이 더 자주 발생하여 Program의 성능에 영향을 끼칠 수 있습니다. Thread Pool은 작업 처리에 사용되는 Thread의 개수를 정해두고 요청을 Queue를 통해 Task를 하나씩 Thread가 처리하도록 하는 역할을 합니다. 미리 만들어 둔 Thread를 재사용할 수 있기 때문에 Thread 생성에 발생하는 비용을 줄일 수 있고, Thread의 개수를 제한하기 때문에 무제한적으로 Thread가 생성되는 것을.. Language/Java 2023. 2. 7.
Thread in Java Java에서 Thread를 생성하는 방법은 두 가지가 존재합니다. 첫번째는 Thread Class를 상속하는 방법과 두번째는 Runnable Interface를 구현하는 방식입니다. 두 방법은 run() 함수를 작성하면 된다는 공통점을 가집니다. 하지만 Thread Class를 상속하는 방식은 Java가 다중 상속을 지원하지 않기 때문에 일반적으로 Runnable Interface를 구현하는 방식으로 Thread를 생성합니다. Extends Thread Class package com.donghwan.study.java.thread.extend; // Extends Thread Class public class StudyThread extends Thread { @Override public void r.. Language/Java 2023. 2. 7.
[Programming] Process & Thread 프로세스란? 프로그램은 하드디스크 같은 저장장치에 보관되어 있고 폰노이만 구조에서 프로그램이 실행된다는 것은 해당 코드가 메모리에 올라와서 작업이 진행된다는 의미입니다. 프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태입니다. 쉽게 말해, 프로세스란 실행중인 프로그램입니다. 하나의 CPU 즉 프로세서는 한 순간에 하나의 프로세스만 실행할 수 있습니다. 하지만 우리는 동시에 여러 프로그램을 사용합니다. 이것은 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체하고 있기 때문에 동시에 실행되는 것이 아니라 동시에 실행되는 것처럼 보이는 것입니다. 프로세스의 특징 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 (실행중인 프로그램) 메모리에 올.. Computer Science/Programming 2021. 9. 29.