일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- Gradle
- 안드로이드강좌
- Rxjava
- 알고리즘
- theming
- Compose
- 스레드
- 회고
- mockito
- 자바
- 알게되는
- k8s
- android
- 안드로이드스튜디오
- Kotlin
- 테스트
- ReactiveProgramming
- 병럴프로그래밍
- g 단위테스트
- kotlin강좌
- Coroutine
- viewmodel
- 커스텀상태
- 코틀린
- 병렬프로그래밍
- 디자인패턴
- 글또
- 책
- 코루틴
- Today
- Total
목록분류 전체보기 (154)
선생님, 개발을 잘하고 싶어요.
작업(task) 👉 추상적, 명확하게 구분된 업무 단위 애플리케이션 요구 사항을 작업 단위로 분할하면 프로그램 구조 간결 트랜잭션 범위 지정으로 오류 효과적 대응 작업 실행의 병렬성 극대화 스레드에서 작업 실행 작업의 범위를 어디까지로 할 건가 정해야한다. 완전히 독립적인 동작 👉 병렬성 보장을 위함 작업 스케줄링, 부하 분산(load balancing)을 하려면 작업 단위를 충분히 작게 구성 작업을 순차적으로 실행 가장 간단한 방법, 단일 스레드에서 작업 목록을 순차적 실행 작업마다 스레드를 직접 생성 작업 요청 마다 스레드를 생성한다. 다음과 같은 결과 작업 처리하는 기능이 메인 스레드와 분리 👉 서버의 응답 속도 🆙 동시에 여러 작업을 병렬로 처리할 수 있다 👉 서버의 처리 속도 🆙 프로그램이 동시..
자바 기본 라이브러리를 보면 병렬 프로그램 작성 시 필요한 여러 가지 동기화 도구가 마련되어있다. 스레드 안전한 컬렉션 클래스 동시 동작 스레드 간 작업 조율하는 동기화 클래스 동기화된 컬렉션 클래스 Vector, Hashtable, Collections.synchronizedXxx 스레드 안정성 확보 방법 👉🏻 클래스 내부에 캡슐화 해 내부 값을 한 번에 한 스레드만 사용할 수 있도록 제어 동기화된 컬렉션 클래스의 문제점 클라이언트 코드에서 두 개 이상의 연산을 묶어서 사용하는 경우 반복, 컬렉션 내부의 모든 항목을 차례로 가져다 사용 이동, 특정한 순서에 맞춰 지금 항목의 다음 항목 위치로 이동 없는 경우에만 추가하는 기능 개별 연산에 대한 스레드 안전은 지켜주지만, 그 연산을 조합한 복합 연산은 적..
스레드 안전성 확보한 컴포넌트를 안전하게 서로 연결해 사용한다면 규모 있는 컴포넌트나 프로그램을 좀 쉽게 작성할 수 있을 것 스레드 안전한 클래스 설계 🌟 스레드 안전성 확보할 때 고려사항 객체의 상태를 보관하는 변수는? 그 변수가 가질 수 있는 값의 범위는? 객체 내부 값을 동시에 사용할 때 그 과정을 관리할 정책은? 객체 상태는 내부 변수에 의해서 결정된다. 동기화 정책 👉 값이 계속 변하는 상황에서도 값을 안전하게 사용하도록 조절하는 방법 객체 불변성, 스레드 한정, 락 등 어떻게 사용해야 스레드 안전성을 확보할 수 있는지 명세 어떤 변수를 어떤 락으로 막아야 하는지 명세 (e.g. @GuardedBy) 동기화 요구사항 정리 스레드 안전성을 확보했다? 👉 여러 스레드가 동시에 클래스를 사용하는 상황..
여러 개의 스레드에서 객체를 동시에 사용하려 할 때 섞이지 않고 안전하게 동작하도록 객체를 공유하고 공개하는 방법을 살핀다. 크리티컬 섹션? 코드 블록을 동기화할 때 항상 메모리 가시성(Memory Visibility) 문제가 발생한다. 반드시 달성돼야 하는 거 변수를 사용하고 있을 때 다른 스레드가 해당 변수 값을 사용하지 못하도록 막아야한다. 동기화 블록을 빠져나가고 나면 다른 스레드가 변경된 값을 즉시 사용할 수 있어야한다. 가시성 변수에 값을 저장하고 이후에 값을 다시 읽으면, 아까 저장한 값을 가져올 수 있을거라고 예상한다. 하지만 멀티 스레드 환경에서는 특정 변수의 값을 가져갈 때 다른 스레드가 작성한 값을 가져갈 수 없을 수 있다. 심지어 값을 읽지 못할 수 있다. 🌟 메모리상 공유된 변수를..