개요

스프링 시큐리티를 사용하지 않고 인증을 구현해보는 작업을 하던 도중, 싱글톤을 주도적으로 사용하는 스프링이 어떻게 비동기적인 유저의 요청에 따른 각각의 컨텍스트(서블릿)들에 대해서 처리(멀티 스레딩)할 수 있는지 궁금해졌다.


싱글톤

싱글톤은 일종의 소프트웨어 디자인 패턴으로서, 생성자가 여러번 호출되더라도 실제로 생성된 객체는 하나이고, 최초의 생성자가 생성한 객체를 리턴하는 방식을 얘기한다. 즉, 프로그램 런타임동안 하나의 인스턴스만 사용한다는 의미이다.

장점

단점


멀티 스레딩

이진코드로 존재하는 실행가능한 파일은 프로그램. 그 프로그램을 실행하여 메모리에 얹게되면 프로세스. 그리고 그 프로세스에서 공유 자원(메모리)를 사용하는 하나의 실행 흐름(단위)는 스레드. 내가 이해하고 있는 바는 위와 같다.

이 상황에서 하나의 프로세스가 여러 개의 작업흐름, 즉 여러 개의 스레드를 통해 실행되고 있다면 그것을 멀티 스레딩이라고 할 수 있다.

ex) 크롬 브라우저라는 하나의 프로세스에는 스크롤이라는 스레드, 즐겨찾기라는 스레드, 화면을 출력하는 스레드 등이 있다고 생각할 수 있다.