목록Thread (4)
개발자는 기록이 답이다

1. 프로세스 개요 '실행 중인 프로그램' = '프로세스' 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억 장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다. 그 리고 이 과정을 '프로세스를 생성한다'라고 표현한다. 프로세스 직접 확인하기 컴퓨터가 부팅되는 순간부터 수많은 프로세스들이 실행된다. 윈도우에서는 작업 관리자의 [프로세스 탭]에서 확인할 수 있고, 유닉스 체계의 운영체제에서는 ps 명령어로 확인할 수 있다. 실제로 컴퓨터를 켜고 확인해 실행한 프로세스 외에도 알 수 없는 여러 프로세스가 실행되고 있는 것을 볼 수 있다. 그중에는 사용자가 볼 수 있는 공간에서 실행되는 프로세스도 있지만, 보이지 않는 공간에서 실행되는..

멀티 스레드에 대해 배우면서, 스레드를 재사용할 수 있는 스레드 풀에 대해 알게 되었다. 그런데 처음 보는 클래스와 인터페이스가 많아서 정리하면서 좀 더 확실히 이해하고자 한다. 여러 배경지식도 함께 포스팅했기 때문에 ThreadPoolExecutor의 디버깅 과정이 궁금하다면 하단에 있는 5번으로 가주시길 바랍니다. 1. 스레드 풀이란? 스레드 풀이 무엇인지 알기 전에 먼저 알아야 할 키워드는Thread Per Request Model 이다. (One to one thread model이라고도 부른다. 이 부분은 오라클 문서를 참고하자) 이 방식은 웹 서버에서 요청이 들어올 때마다 새로운 스레드를 생성하여 해당 요청을 처리하므로, 각 요청은 독립적으로 실행되기 때문에 동시에 여러 요청을 처리할 수 있으..

1. 동기화 메소드와 동기화 블록 공유 객체를 사용할 때의 주의할 점 싱글 스레드 프로그램에서는 한 개의 스레드가 객체를 독차지해서 사용하면 되지만, 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다. 이 경우, 스레드 A를 사용하던 객체가 스레드 B에 의해 상태가 변경될 수 있기 때문에 스레드 A가 의도했던 것과는 다른 결과를 산출할 수도 있다. 이는 마치 여러 사람이 계산기를 함께 나눠 쓰는 상황과 같아서 사람 A가 계산기로 작업을 하다가 계산 결과를 메모리에 저장한 뒤 잠시 자리를 비웠을 때 사람 B가 계산기를 만져서 앞 사람이 메모리에 저장한 값을 다른 값으로 변경하는 것과 같다. 그런 다음 사람 A가 돌아와 계산기에 저장된 값을 이용해서 작업을 진행한다면 결국 사람..

1. 멀티스레드 개념 프로세스와 스레드 운영체제에서는 실행중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스다. 하나의 애플리케이션은 다중 프로세스를 만들기도 하는데, 예를 들어 Chrome브라우저를 2개 실행했다면 2개의 Chrome프로세스가 생성된 것이다. 멀티태스킹은 2가지 이상의 작업을 동시에 처리하는 것을 말하는데, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 예를 들어 워드로 문서 작업을 하면서 동시에 윈도우 미디어 플레이러로 음악을 들을 수 있다. 멀티 태스킹은 꼭 멀티 프로세스를 뜻하지는 않는다. ..