본문 바로가기

전체 글361

[Oracle] SELECT 문장의 논리적 실행 순서 SELECT 컬렴명 (5번) FROM테이블명 (1번) WHERE조건식 (2번) GROUP BY 컬럼 또는 표현식(3번) HAVING 그룹 조건식(4번) ORDER BY 컬럼 또는 표현식 (6번) 2022. 10. 10.
[Java] Thread(쓰레드) - 5 1. 쓰레드 동기화 싱글 쓰레드 프로세스의 경우 프로세스 내에서 단 하나의 쓰레드만 작업하기 때문에 프로세스의 자원을 가지고 작업하는데 별 문제가 없지만, 멀티 쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게된다. 만일 쓰레드A가 작업하던 도중에 다른 쓰레드B에게 제어권이 넘어갔을 때 , 쓰레드 A가 작업하던 공유 데이터를 쓰레드 B가 임의로 변경하였다면, 다시 쓰레드 A가 제어권을 받아서 나머지 작업을 마쳤을 때 원래 의도하던 것과는 다른 결과를 얻을 수 있다. 이러한 일이 발생하는 것을 막기 위해서 한 쓰레드가 특정 작업을 끝마치기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는 것이 필요하다. 그래서 도입된 개념이 바로 '임계 영역.. 2022. 6. 2.
[Java] Thread(쓰레드) - 4 1. 데몬 쓰레드 데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. 일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제적으로 자동 종료되는데, 그 이유는 데몬 쓰레드는 일반 쓰레드의 보조적인 역할을 수행하므로 일반 쓰레드가 모두 종료되고나면 데몬 쓰레드의 존재의 의미가 없기 때문이다. 이 점을 제외하고는 데몬 쓰레드와 일반 쓰레드는 다르지 않다. 데몬 쓰레드의 예로는 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 있다. 데몬 쓰레드는 무한 루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. package thread; public class ThreadEx10 implements Runnable { .. 2022. 6. 2.
[Java] Thread(쓰레드) - 3 1. 싱글쓰레드와 멀티쓰레드 싱글 쓰레드 프로세스와 멀티 쓰레드 프로세스의 차이를 봐보자. 두 개의 작업을 하나의 쓰레드(th1)로 처리하는 경우와 두 개의 쓰레드(th1, th2)로 처리하는 경우를 가정해보자. 하나의 쓰레드로 두 작업을 처리하는 경우는 한 작업을 마친 후에 다른 작업을 시작하지만, 두 개의 쓰레드로 작업을 하는 경우에는 짧은 시간 동안 2개의 쓰레드가 번갈아가면서 작업을 수행해서 동시에 두 작업이 처리되는 것처럼 보인다. 하나의 쓰레드로 두 개의 작업을 수행한 시간과 두개의 쓰레드로 작업을 수행한 시간은 거의 같다. 오히려 쓰레드를 2개로 만들어서 사용한 경우가 더 오래걸린다. 그 이유는 쓰레드간의 컨텍스트 스위칭 비용이 추가로 걸리기 때문이다. 작업 전환을 할 때는 현재 진행중인 작.. 2022. 5. 31.
[Java] Thread(쓰레드) - 2 1. 쓰레드의 구현과 실행 쓰레드를 구현하는 방법은 Thread 클래스를 상속 받는 방법과 Runnable 인터페이스를 구현하는 방법 2가지이다. 두가지 방법 모두 상관없지만 Thread 클래스를 상속 받으면 다른 클래스를 상속받을 수 없기 때문에 Runnable 인터페이스를 구현하는 방법이 일반적이다. class MyThread extends Thread { public void run() { /* 작업 내용 */ } // Thread 클래스의 run()을 오버라이딩 } class MyThread implements Runnable { public void run() { /* 작업 내용 */ } // Thread 클래스의 run()을 오버라이딩 } 2개의 방식으로 쓰레스를 만들고 호출해본다. packa.. 2022. 5. 30.
[Java] Thread(쓰레드) - 1 1. 프로세스란? 프로세스란 간단히 말해서 "실행중인 프로그램"이다. 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당 받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 따라서 모든 프로세스는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 "멀티쓰레드 프로세스"라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나 쓰레드가 작업을 수행하는데 개별적인 메모리 공간(호출스택)을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 수 있는 쓰레드의 수가 결정된다. 실제로는 프로세스의 메모리 한계에 다다를 정.. 2022. 5. 30.