자바의 메모리 영역 중 stack은 메소드, 지역 변수를 저장하기 위해 쓰인다.
메소드가 호출되면 메소드의 매개변수, 지역 변수, 메소드가 실행이 끝나고 나서 반환해야하는 메모리 주소를 담은 새로운 프레임(Frame)이 스택의 가장 위쪽에 추가된다.
자바의 쓰레드는 각각의 stack을 가지고 있기 때문에 여러 쓰레드들이 각기 다른 메소드를 동시에 실행할 수 있다.
쓰레드의 스택이 비게 되면 쓰레드는 삭제된다.
쓰레드가 처음 생성될 때 스택의 크기는 고정된다.
스택의 크기가 충분하지 않다면, 쓰레드가 너무 많은 값들을 stack에 push하려하고, 이 때 런타임에러인 Stack Overflow가 발생한다.
일반적인 큐에서 데이터를 꺼내는 경우 배열 앞 쪽이 비어버리기 때문에 공간 활용을 위해 배열에 존재하는 데이터를 앞 쪾에 비는 만큼 이동시켜야 하는 단점이 존재한다.
일반 큐와 달리 원형 큐는 데이터를 꺼내올 때 데이터를 이동하지 않는다. 대신 Front포인터를 한 칸 뒤로 이동시킨다. 배열의 끝에 도달할 경우 다시 배열의 처음으로 돌아와 데이터를 저장하는 배열을 순환 구조로 사용할 수 있도록 한다.
우선 순위가 높은 데이터가 먼저 나오게 되는 큐. FIFO의 특성을 잃는다.
배열을 사용하여 구현되는 큐와 달리 우선 순위 큐는 힙(Heap)을 사용하여 구현한다.