네트워크 프로그래밍 기반의 뱀 게임 개발
서론
네트워크 기반 뱀 게임 프로젝트는 여러 기술적 도전을 극복하며 풍부한 성과를 거두었습니다. 기술적 관점에서, 네트워크 통신 프로토콜의 활용에 능숙해져 플레이어 간 실시간 상호작용을 구현했습니다. 정교하게 설계된 데이터 구조를 통해 뱀의 위치, 상태 및 게임 시나리오를 효율적으로 관리했습니다. 인터페이스 설계에서는 단순하고 직관적인 방식을 추구하 ...
7월 16일 19:53에 게시됨
자바 스레드 풀의 원리와 활용
스레드 풀이란?
스레드 풀은 일종의 작업 스레드 관리 컨테이너로 이해할 수 있다. 애플리케이션이 시작될 때 미리 여러 개의 스레드를 생성하여 풀 안에 보관하고, 작업이 필요할 때마다 새로 스레드를 만들지 않고 이 풀에서 꺼내 사용한다. 작업이 끝나면 스레드는 다시 풀로 반환되어 다음 작업을 기다린다.
기존 방식의 문제점
자바 1.5 이전에는 각각의 작업마다 ne ...
7월 6일 22:41에 게시됨
Java 멀티스레딩 구현과 락 활용 및 실행 결과 처리 기법
기본 스레드 구현: Runnable 인터페이스 활용
Runnable 인터페이스를 구현할 때 주의점: 작업 객체 인스턴스 생성은 반복문 외부에서 수행해야 합니다. 반복문 내에서 생성할 경우 락 동기화가 제대로 동작하지 않습니다.
@Controller
@RequestMapping("/task")
public class TaskProcessor implements Runnable {
private final Lock taskLock = new ReentrantL ...
7월 3일 06:30에 게시됨
Chrome의 스레딩과 태스크 처리 방식
개요
크롬은 높은 수준의 멀티스레딩을 활용하는 제품입니다. UI 반응성을 최대한 유지하기 위해 UI 스레드에서 블로킹 I/O나 무거운 연산을 수행하지 않습니다. 스레드 간 통신에는 메시지 전달 방식을 사용하며, 락이나 스레드 안전 객체 사용을 지양합니다. 대신 객체는 단일 스레드에만 존재하고, 스레드 간 통신은 메시지를 주고받으며, 대부분의 교차 스레드 요청에 ...
6월 25일 22:52에 게시됨
스레드 풀 사용 시 주의사항과 모범 사례
스레드 풀 올바르게 선언하기
스레드 풀은 반드시 `ThreadPoolExecutor` 생성자를 통해 수동으로 선언해야 하며, `Executors` 클래스를 사용하여 생성하면 OOM(메모리 부족) 위험이 있습니다.
`Executors`가 반환하는 스레드 풀에는 다음과 같은 문제점이 있습니다:
`FixedThreadPool`과 `SingleThreadExecutor`: 무제한 `LinkedBlockingQueue`를 사용하며, 큐 크기가 `In ...
6월 1일 18:42에 게시됨