Thread의 동기화
·
Java
쓰레드의 동기화싱글쓰레드 환경에서는 프로세스 내에 하나의 쓰레드로 작업이 수행되기에 데이터의 사용에 문제가 없지만 멀티쓰레드 환경에서는 동일한 자원을 공유하여 작업을 하게 될 경우 서로의 작업에 영향을 주게 된다.  예를 들어, A와 B 쓰레드가 동일한 자원을 이용하여 작업을 진행한다고 가정해보자.A가 해당 자원을 변경시킨 후 B가 자원을 읽으려고 한다면 원래 얻고자 했던 결과가 아니라 A가 변경시킨 자원을 얻게 된다.이러한 문제를 방지하기 위해 자원을 방해 받지 않도록 하는 개념이 임계 영역과 Lock이다. 공유할 자원에 대한 소스코드 영역을 임계 영역으로 지정해두고, 공유 자원에 대한 Lock을 획득한 하나의 쓰레드만이 자원을 사용하도록 하는 것이다. 쓰레드가 자원 사용을 완료하여 Lock을 반납해야..
MySQL로 재귀구조 표현하기 fit. 쇼핑몰 카테고리
·
카테고리 없음
쇼핑몰의 상품 관련 기능을 구현하고 있다.카테고리가 3계층으로 이루어져 있고, 상위 카테고리 클릭시 하위 카테고리의 상품들도 함께 조회 되어야 한다.이를 위해 원래는 000(대), 000111(중), 000111222(소) 와 같이 category id를 지정하여 '000'을 포함하는 category id를 가진 상품들을 조회할 생각이었다.그러나 위와 같이 할 경우 카테고리가 변경 또는 이동될 때 id, 즉 PK를 수정해야 하고, 하위 카테고리 id가 상위 카테고리 id를 포함하여 복잡하다는 등의 문제가 있었다. 이 글은 이를 해결하기 위해 재귀 구조를 활용한 과정을 담고 있으며 본인은 현업자가 아니고, 또 경험이 부족하기에 올바른 방법이 아닐 수 있음을 염두에 두고 읽어주기를 바란다. 계층적 데이터계층..
Thread 구현 및 실행
·
Java
Thread쓰레드는 프로세스와 연관이 깊은 개념이다. 먼저 프로세스는 간단히 말해서 실행 중인 프로그램이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. Thread 구현쓰레드를 구현하는 방법은 Thread 클래스를 상속하는 방법과 Runnable 인터페이스를 구현하는 방법으로 두가지가 있다. 클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에 인터페이스를 구현하는 방법이 일반적이다. Thread 구현 (1) - Thread 클래스 상속쓰레드를 구현한다는 것은 단지 쓰레드를 통해 작업하고자 하는..