1. Collection
- 데이터를 저장, 관리하고 처리하기 위한 인터페이스들의 모음
- 다양한 유틸리티 메서드들을 제공하여 데이터 구조와 처리를 효율적으로 관리할 수 있도록 함
- 데이터의 추가, 삭제, 검색 등의 작업을 간편하게 수행
ex) List, Set, Map
2. Stack, Queue

1) 스택 (Stack)
- 선입후출(LIFO)
- 밑이 막혀있는 구조
- 최근 데이터를 우선순위로 함
- 시간 역순으로 데이터를 꺼냄
ex) 함수의 return 호출, 수식 계산(기호)
2) 큐 (Queue)
- 선입선출(FIFO)
- 시간 순서대로 데이터를 저장
- 용량의 한계는 있음
- 시간이 지나도 데이터는 남아있음
- 링크드리스트를 사용하면 가장 쉽게 큐 생성 가능
- 우선순위 큐 등 다양한 큐의 종류가 있음
- 우선순위 큐 : 패럿(?)의 중요도에 따라 우선순위 부여
ex) 통신(버퍼), 시뮬레이션

3. Thread
- 파일(실행 전)->프로세스(실행 후)
- 프로그램 실행 후 프로세스는 메모리(스택, 힙, 코드)에 올라감
- 이때 main Thread는 프로세스의 실행 주체
- Thread = '어떤 함수를 실행해'
- main Thread = 'main 함수를 실행해'

4. Muti Thread
- 병렬로 스레드 2개 만들면, 동시에 2개 실행 가능 ex) main Thread와 work Thread 동시 실행
- if 스레드 2개가 하나의 변수에 동시에 접근하는 경우
→ 경쟁이 발생해서 값이 왜곡될 수 있음
→ 이를 방지하기 위해 Thread의 동기화 발생(일종의 안전 장치)
→ 그러나 속도가 좀 느릴 수 있음
(+) 이러한 안전장치들은 큰 조직일수록 실수를 방지하기 위해 꼭a 필요함
//Map 컬렉션 생성
Map<Integer, String> map = Collections.synchronizedMap(new HashMap<>());
//작업 스레드 객체 생성
Thread threadA = new Thread() {
@Override
public void run() {
//객체 1000개 추가
for(int i=1; i<=1000; i++) {
map.put(i, "내용"+i);
}
}
};
//작업 스레드 객체 생성
Thread threadB = new Thread() {
@Override
public void run() {
//객체 1000개 추가
for(int i=1001; i<=2000; i++) {
map.put(i, "내용"+i);
}
}
};
'네이버클라우드캠프' 카테고리의 다른 글
네이버클라우드캠프 15일차(2/14) (0) | 2024.02.14 |
---|---|
네이버클라우드캠프 14일차(2/13) (0) | 2024.02.13 |
네이버클라우드캠프 11일차(2/6) (0) | 2024.02.06 |
네이버클라우드캠프 5일차(1/29) (0) | 2024.01.29 |
네이버클라우드캠프 1일차(1/24) (0) | 2024.01.28 |