일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spring
- Real MySQL
- MSA
- JPA
- IntellJ
- SpringBoot
- GC
- 백준
- 이스티오
- K8s
- 보조스트림
- 자바 ORM 표준 JPA 프로그래밍
- Stack
- Java
- 스프링
- Kotlin
- redis
- mysql
- gradle
- Stream
- list
- 토비의 스프링 정리
- 쿠버네티스
- 토비의 스프링
- jvm
- Collection
- OS
- 자바
- 스트림
- thread
- Today
- Total
목록멀티쓰레드 (2)
인생을 코딩하다.
Multi-thread 프로그래밍 동시에 여러 개의 Thread가 수행되는 프로그래밍 Thread는 각각의 작업공간 (context)를 가짐 공유 자원이 있는 경우 race condition이 발생 critical section에 대한 동기화(synchronization)의 구현이 필요 쓰레드들이 공유하는 자원 = 쉐어드 리소스 이런 자원의 영역을 critical section 이라고 한다. 이 critical section을 2개의 쓰레드가 접근하게 되었을 때, 만약 critical section 에서 어떤값을 가져와서 더하고 뺀다라고 하면 나중에 더해서 오버라이드 한 값이 무시가 될 수 있다. 그래서 더한 다음에 빼야한다. 결국엔 이런 영역에 관해 순서를 지켜주자는게 동기화다. 이 critical s..
Process 실행중인 프로그램 OS으로부터 메모리를 할당 받음 Thread 실제 프로그램이 수행되는 작업의 최소 단위 하나의 프로세스는 하나 이상의 Thread를 가지게됨 Thread는 CPU를 점유해서 돌아가게 되는데, CPU를 점유할 수 있는 것은 스케쥴러라는 것이 있다. 스케쥴러가 쓰레드의 CPU를 할당을 해서 쓰레드가 수행 되도록 역할을 한다. java 명령어를 사용하여 클래스를 실행시키는 순간 자바 프로스세가 시작되고, main() 메소드가 수행되면서 하나의 쓰 레드가 시작되는 것이다. 아무런 쓰레드를 생성하지 않아도 JVM을 관리하기 위한 여러 쓰레드가 존재한다. 예를 들면 자바의 쓰레기 객체를 청소하는 GC 관련 쓰레드가 여기에 속한다. 그런데 왜 Thread를 만들었을까? 프로세스가 하나..