일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- Stream
- 보조스트림
- 이스티오
- 쿠버네티스
- GC
- list
- Kotlin
- 토비의 스프링 정리
- 스트림
- jvm
- IntellJ
- redis
- MSA
- SpringBoot
- spring
- Stack
- 백준
- 스프링
- Collection
- 자바 ORM 표준 JPA 프로그래밍
- 자바
- thread
- K8s
- Java
- mysql
- Real MySQL
- 토비의 스프링
- gradle
- OS
- 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를 만들었을까? 프로세스가 하나..