분류 전체보기 233

[동시성 톺아보기] Java Thread 주요 관리 API (sleep(), join(), interrupt())

Java Thread의 주요 관리 API인 sleep(), join(), interrupt()는 스레드의 생명주기를 관리하고 동기화하는 데 중요한 역할을 합니다. 이번 글에서는 세 메서드의 특징과 동작방식에 대해 알아보도록 하겠습니다. sleep() - 현재 스레드를 지정된 시간 동안 일시 정지시킨 후, 그 시간이 경과하면 스레드를 실행 대기 상태(RUNNABLE)로 전환합니다. - JVM이 직접 처리할 수 없어 네이티브 메서드와 시스템 호출을 통해 커널 모드에서 수행되며 작업이 완료된 후에 유저 모드로 복귀합니다. - 모니터 락이나 다른 자원을 해제하지 않고 스레드의 실행만 중단시키므로, 이를 사용하는 동안 데드락이 발생할 위험이 있습니다. API 및 예외처리 public static native vo..

Java 2024.03.25

[동시성 톺아보기] Runnable 익명 클래스로 Thread 생성

동시성 톺아보기 시리즈 작성 목적 여러 Thread가 공유 메모리에 동시에 접근할 때 동기화 문제가 발생할 수 있습니다. 이를 깊이 이해하기 위해서, 가장 먼저 Thread 생성 코드를 작성 후 내부 메커니즘을 살펴볼 것입니다. timegate-commerce 선착순 상품 구매 프로젝트를 진행하면서 경험한 동시성 문제를 단순히 해결하는 것을 넘어, 운영체제의 프로세스와 스레드의 기초부터 시작해 동시성 문제를 해결해나가는 깊이있는 학습을 목표로 합니다. 이론 1. 스레드 생성 Thread는 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현함으로써 생성할 수 있습니다. 이 때, 익명 클래스나 람다 표현식을 활용하는 것도 가능합니다. 2. 스레드 실행 start() 메서드를 호출하면, 시스템 ..

Java 2024.03.17

[백준 2751번, 백준 10814번, LeetCode 179번] 정렬 문제 풀이

[백준 2751번] 수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 접근 방법 N개의 수가 주어졌을 때, 오름차순 정렬하는 문제입니다. 1. 문자열로 입력받은 부분을 Integer.parseInt() 메서드를 통해 정수로 바꿔줍니다. 2. 배열을 만든 후 for문을 돌면서 입력받은 문자열 ➡ 정수를 차례로 넣습니다. 3. 정렬 후 출력합니다. 코드 구현 1. 실패 코드 import java.util.*; import ..

[LeetCode] 785. Is Graph Bipartite?

https://leetcode.com/problems/is-graph-bipartite/description/ Is Graph Bipartite? - LeetCode Can you solve this real interview question? Is Graph Bipartite? - There is an undirected graph with n nodes, where each node is numbered between 0 and n - 1. You are given a 2D array graph, where graph[u] is an array of nodes that node u is adjacent to. Mo leetcode.com 각 노드의 번호가 0에서 n-1 사이인 노드가 n개인 방향성 없..

[programmers] 양과 늑대

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대..

[programmers] 두 큐 합 같게 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제..