DevBoi

잡다하지만 필요한 기술지식 8 본문

[Computer Science]

잡다하지만 필요한 기술지식 8

HiSmith 2021. 7. 26. 11:05
반응형

JAVA에서 싱글톤 패턴을 쓰는 이유

 

싱글톤 : 최초 한번만 메모리를 할당하고, 그 메모리에, 객체를 만들어 사용하는 디자인 패턴

 

1) 객체를 여러번 생성하지 않아도 되기 때문에, 비용이 적다.

2) 객체가 무조건 한번만 생성되는 것을 보장

3) 한번 만들어서 여러곳에서 사용하면 수정하기 힘들다.

4) 테스트하기 어렵다

5) 많이 사용하게 된다면, 다른 객체들과 결합도가 높아져, 객체지향 프로그래밍의 의미를 벗어나게된다.

또한 수정의 경우, 사이드 이팩트 발생 환경이 높아지고, 멀티 쓰레드 환경에서 동기화 문제가 발생한다.

 

 

6.Thread 가 3개 생성 되었을 때 t1, t2, t3의 순서가 보장 되는 코드를 짜 보세요.

이건 Tread Safe한 상황에 대한 코드를 짜는것에 대한 테스트이다.

우선 Tread Safe 란, 여러개의 쓰레드가 동시에 처리하더라도, Thread Safety 하게 처리를 할수 있는것

 쓰레드를 여러개하고, start 를 해도, 멀티 쓰레드를 지원하기때문에 순서는 보장되지 않는다.

그러면, 어떻게 보장해야할까??

바로 스레드 상태제어, join을 쓰면된다.

thread.start로 쓰레드를 시작한뒤에, 해당 tread.join을 걸어주면, 쓰레드가 종료될때까지 기다린다.

thread1,2,3 이있다고 가정하자.

Thread threa1 = new Thread();

Thread threa2 = new Thread();

Thread threa3 = new Thread();

 

이라고 가정하면,

thread1.join()

sysout("1끝")

thread2.join()

sysout("2끝")

thread3.join()

sysout("3끝")

 

이런식으로 하면, 쓰레드 여러개에 대한 순서를 보장할수 있다.

 

7.Process와 Thread의 차이점

프로세스랑 Thread의 차이점은 우선 크게는 JVM 외부에서 실행되는건 프로세스, 내부에서는 Thread이다.

Thread는 프로세스 내부에서 동작하는 여러개의 것인데,

메모리에 올라와 실행되고있는 프로그램의 인스턴스를 프로세르라고 하고, 코드,데이터,스택,힙의 영역으로 나뉜다.

쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다. 따라서 쓰레드는 스택만 할당 받아, 실행되고,

다른 쓰레드들끼리 스택이나 자원을 공유하면서 사용된다. (스택 이외 공간은 서로 공유)

 

 

1.Java8에서 Stream을 사용한 경우 발생 할 수 있는 문제점은?

우선 Stream 객체는 재사용이 불가하다. 다시 다른 메소드에서 해당 스트림에 대한 사용을 하면 오류가 난다.

 

 

 

3.java7에서 8로 올라오면서 어떤게 달라졌나요?

Stream 객체 사용 가능, 람다식 사용가능

 

 

 

2.Spring에서 Single ton이란?

위에서 말한 싱글톤 패턴이랑 유사한 사유이다.

우선 싱글톤의 개념은 하나의 객체만 존재한다 이다.

스프링의 싱글톤은, 클래스 로더의 싱글톤 개념인 자바와 달리 어플리케이션 컨텍스트 단위이다.

@Bean으로 등록하게 되면, Spring에서는 그 클래스에 대해서 한개의 인스턴스만 만든다. 이를 관리하고,

Bean이 호출될때마다, 스프링은 공유 인스턴스를 리턴한다. Bean의 관리 주체가 스프링 컨테이너이기 떄문에 단일 공유 인스턴스를 리턴시키므로, Thread Safety도 자동으로 보장된다.

Java의 싱글톤은 코드 전체이고, 스프링은 싱글톤은 컨테이너 내부이다.

Java의 경우 개발자의 코드에 따라 쓰레드 세잎을 보장할수도안할수도있지만, 스프링은 컨테이너가 이를 관리하고,

내부의 Bean은 하나로 취급되어야 하기 떄문에 자동으로 보장된다.

반응형

'[Computer Science]' 카테고리의 다른 글

잡다한 기술 지식 10  (0) 2021.07.28
잡다한 기술 지식 9  (0) 2021.07.27
잡다하지만 필요한 기술지식 7  (0) 2021.07.25
잡다하지만 필요한 기술지식 6  (0) 2021.07.23
잡다하지만 필요한 기술지식 5  (0) 2021.07.22