일단 씻고 나가자

23.04.24 본문

Study/닥치는 대로 주워 담기

23.04.24

일단 씻고 나가자 2023. 4. 25. 00:39

2023. 04. 24 월요일

 

- [DB] 특정 애트리뷰트의 문자열을 숫자로 바꾸는 함수?

: SELECT TO_NUMBER(컬럼 명)

 

 

- [DB] 어떤 시간을 24시의 시간으로 바꾸는 방법?

: TO_CHAR(날짜, ‘HH24’)

 

 

- [Java] Mapvalue 기준으로 sort하는 방법?

: Map.Entry.comparingByValue()를 이용한다. 담는 그릇은 List로 활용해야 한다.

List<Map.Entry<Generic, Generic>> list = new ArrayList(map.entrySet());

Collections.sort(list, Map.Entry.comparingByValue());

for(Map.Entry<Generic, Generic> entry : list) entry.getKey();

https://velog.io/@cgw0519/Java-HashMap-Value-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0

 

 

- 스레드의 탄생 배경? 스레드란? 특징?

: 멀티 프로세스 환경에서 IPC를 이용해서 소통해야 하는 불편함을 해결하기 위해 나온 개념.

 

스레드 (Thread)는 자기만의 영역은 stack 하나뿐이기 때문에 light weight process라고도 한다.

스레드란 하나의 프로세스 안에 여러 스레드로 활용. 멀티 프로세스처럼 여러 CPU에게 다른 작업을 맡겨 병렬적으로 처리 가능. 추가로 하나의 프로세스 내부에 있으므로 자원을 공유할 수 있다. 소프트웨어 병행 작업 처리 (빠른 처리)를 위해 사용된다.

프로세스의 Code, Data, Heap, Stack을 공유하며, 스레드는 함수 형태로 기능이 제공되기 때문에 각각의 독립적인 stack 영역을 가진다.

 

 

- 스레드의 장단점?

장점

1. 성능, 응답성이 향상.

// 사용자가 버튼을 누르거나 하는 것에 대한 반응이 빨라짐. (응답성)

2. 자원 공유 효율.

// 멀티 프로세스는 프로세스별로 별도의 공간이 필요하므로 자원 공유 효율이 높다.

// 또한 IPC처럼 프로세스 간 자원 공유를 위한 번거로운 작업이 필요 없다.

3. 작업이 분리되어 코드가 간결.

 

단점

1. 스레드 중 하나의 스레드만 문제가 있어도 전체 프로세스가 영향을 받음.

2. 스레드가 많아지면 Context Switching이 많이 일어나서 성능 저하.

3. 동기화 이슈에 인한 문제가 생길 수 있으므로, 동기화 코드를 요함.

 

 

- 동기화 이슈란? join() 함수의 의의?

: Synchronization 이슈. 동기화란 작업들 사이에 실행 시기를 맞추는 것.

여러 스레드가 같은 자원(데이터) 접근 시 동기화 이슈를 발생시킨다.

 

join()은 특정 스레드가 작업이 끝나도 다른 스레드가 모두 종료될 때까지 기다리는 작업이다.

프로세스는 하나고 내부의 스레드는 많은데, 같은 일을 시켰어도 특정 스레드가 먼저 작업을 완료하여 프로세스의 코드 끝까지 수행하여 작업을 종료시키면 프로세스 전체가 종료되어 다른 스레드도 강제 종료가 되게 된다. 이를 막기 위해 join() 함수를 쓴다. join() 이후의 코드는 모든 스레드가 종료된 후에 실행된다.

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.04.27  (0) 2023.04.28
23.04.26  (0) 2023.04.28
23.04.21  (0) 2023.04.22
23.04.20  (0) 2023.04.21
23.04.19  (0) 2023.04.20