크리티컬 섹션이란?일반적인 프로그래밍 용어로서의 크리티컬 섹션: 다중 쓰레드 환경에서 여러 쓰레드가 동시에 접근할 수 있는 공유 자원을 사용하는 코드 영역을 지칭합니다. 크리티컬 섹션은 데이터의 일관성을 유지하기 위해 특정 시점에 한 쓰레드만 접근할 수 있어야 하는 부분입니다. 이러한 크리티컬 섹션을 보호하기 위해 뮤택스, 세마포어, 락 등의 동기화 메커니즘을 사용할 수 있습니다.Windows API에서의 크리티컬 섹션 객체: windows OS에서는 "크리티컬 섹션"이라는 특정 동기화 객체를 제공합니다. 이 객체는 windows 내에서 경량 동기화를 제공하며, 특히 같은 프로세스 내의 쓰레드들 사이의 동기화에 사용됩니다. windows의 크리티컬 섹션 객체는 뮤택스보다 빠르고 효율적이지만, 프로세스 간..
전형적인 switch 표현식 @NoArgsConstructor @AllArgsConstructor public class Player { private int id; private PlayerTypes type; public static Player createPlayer(PlayerTypes type){ switch (type) { case TENNIS : return new TennisPlayer(); case FOOTBALL : return new FootballPlayer(); case UNKNOWN : return new UnknownPlayerException("Player type is unknown"); // default문을 빠뜨리면 컴파일 에러가 발생됨 default: throw new..
1. Thread 병렬 작업 시 문제점 지난 몇 개의 과정에서 Thread를 생성하고 실행하는 방법에 대해 알아보았습니다. 이런 식으로 Thread를 실행했을 때 생기는 중요한 결핍 중 하나는 Thread 실행에 대해서 그 어떤 통제도 불가능하다는 점이 있습니다. 어느 특정 시점에서 얼마나 많은 Thread가 실행되고 있는지 알 수 없습니다. 예를 들어, 세 개의 Thread만 어떤 시점에서 실행하고 있게 만들고 싶다고 해보겠습니다. 이러한 조작은 Thread의 실행을 start 메소드를 이용하여 확립할 경우에는 매우 어렵습니다. 또 다른 문제도 있습니다. 예를 들어 Task1과 Task2 중 하나가 완료될 때까지 기다리고 싶다고 해보겠습니다. Thread를 이용한 기본적인 것으로는 이 상황에 맞는 코드..
스레드 우선순위(Thread Priority) 우리가 이미 알고 있듯이 Java는 스레드 스케줄러가 스레드의 우선 순위에 따라 스레드에 프로세서를 할당하는 멀티스레딩 환경 내에서 완전히 객체 지향적으로 작동합니다. Java에서 스레드를 생성할 때마다 항상 우선 순위가 할당됩니다. 우선순위는 스레드를 생성하는 동안 JVM에서 제공하거나 프로그래머가 명시적으로 제공할 수 있습니다. 스레드의 우선 순위는 각 스레드가 우선 순위를 갖는 개념으로, 조금 더 쉽게 설명 드린다면 모든 객체가 1에서 10 사이의 숫자로 표시되는 우선 순위를 갖는다고 말할 수 있습니다. 기본 우선 순위는 예외로 5로 설정됩니다. 최소 우선 순위는 1로 설정됩니다. 최대 우선 순위는 10으로 설정됩니다. 위 설정과 관련된 값들은 Thre..
1. Main Thread란 Java는 다중 스레드 프로그래밍 지원 기능이 내장되어있습니다. 다중 스레드 프로그램은 동시에 실행할 수 있는 두 개 이상의 스레드를 포함합니다. 각 스레드는 별도의 실행 경로를 정의합니다. Java 프로그램이 시작되면 하나의 스레드가 즉시 실행되기 시작합니다. 이것은 프로그램이 시작될 때 실행되는 스레드이기 때문에 일반적으로 프로그램의 메인 스레드(Main Thread)라고 합니다. 메인 스레드의 특성으로는 이 스레드는 다른 "Child" 스레드를 생성 할 수 있습니다. 다양한 종료 작업을 수행하기 때문에 실행을 완료하는 마지막 스레드여야 하는 경우가 많습니다. 흐름도(flow diagram)는 다음과 같습니다. 2. 메인 스레드를 제어하는 방법 메인 스레드는 프로그램이 시..
- Total
- Today
- Yesterday
- JAVA8
- 파스칼 표기법
- aspectj
- Thread
- java11
- chmod
- spring
- gradle
- jdk12
- JUnit
- junit5
- 카멜 표기법
- IntelliJ
- Critical Section
- 크리티컬 섹션
- ThreadPool
- Swagger
- hot-deploy
- sgw
- JPA
- 한글깨짐
- Executor
- Visual Studio 2022
- spring-security
- Redis
- jdk13
- thread priority
- JetBrains Mono
- java
- Mockito
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |