Open Leeminw opened 3 months ago
Collection에서 stack과 ArrayDeque이 있습니다.
1. 두 클래스의 성능 상 차이는 어떻게 되나요? ArrayDeque은 Deque 인터페이스를 상속 받아 구현하여 Stack의 특징 뿐만 아니라 큐의 특징까지 수행할 수 있습니다. Stack 클래스는 Vector로 구현되어있어 stack 기능 하나만 수행이 가능합니다. 또한 전체적인 성능은 ArrayDeque이 더 좋습니다. 2. Stack 클래스보다 ArrayDeque 클래스가 빠른 이유가 무엇인가요? stack 클래스는 Vector로 구현되고 Vector 클래스는 Syncronize method를 구현합니다. 해당 메소드는 동기적으로 작동하여 멀티 쓰레드 환경에서 동일한 변수에 접근하려할 때 순차적으로 처리하기 때문에 성능 상 저하가 발생하게 됩니다.
Stack 클래스와 ArrayDeque 클래스가 있습니다.
- 싱글쓰레드의 경우 Stack 클래스보다 ArrayDeque 클래스의 성능이 더 좋습니다. - Stack 클래스는 vector 클래스를 상속받아 구현된 클래스이기 때문에 대부분의 함수에 Syncronized 라는 키워드가 붙게 되어 단일 쓰레드에서 성능상 저하가 발생하기 때문입니다.
Stack 클래스와 ArrayDeque과 같은 클래스가 있습니다.
1. 성능차이는 일반적으로 Stack 클래스보다 ArrayDeque 클래스가 조금 더 빠릅니다. 2. Stack의 경우 push, pop과 같은 자료구조 삽입 삭제 메서드들이 모두 synchronized 키워드를 통해 동기화되고 있어, 그렇지 않은 ArrayDeque 클래스에 비해 느립니다. -> 그럼 멀티스레딩 환경에서는 Stack 구현체가 더 좋은거 아니야? 해당 상황에서도 Stack을 사용하는 것 보다는 ConcurrentLinkedDeque와 같은 클래스들이 있기 때문에 Stack을 사용하지는 않습니다.
문제
자바에서 stack기능을 가지고 있는 클래스들을 알려주세요.
예상 꼬리 질문
- 두 클래스의 성능차이는 어떻게 되나요? - Stack 클래스보다 ArrayDeque클래스가 빠르다고 하는데 이유가 뭘까요?들어가야 할 키워드 정리