java30 JAVA의 Thread JAVA의 Thread 자바에서는 여러 스레드를 생성하여 여러 작업들을 병렬적으로 수행할 수 있다. 오늘은 이에 대해 알아보자! Lang.Thread의 주요 메소드 우선 간단하게 스레드와 관련된 메서드를 먼저 보자. 각각은 스레드의 상태를 변화시키는 메서드이다. start() NEW에서 RUNNABLE로 보낸다. run() 스레드 상태가 RUNNING되면, run 메소드에 오버라이딩된 로직을 수행한다 yield() 우선권이 동일한 스레드에게 실행 기회를 양보한다. 해당 스레드는 RUNNING에서 RUNNABLE 상태로 바뀐다. sleep() 현재 실행중인 스레드를 주어진 시간동안 TIMED_WAITING 상태로 빠트린다. join() 다른 스레드와 협동 작업을 할 때 주로 쓴다. 호출되면 BLOCKED .. 2024. 4. 15. Thread, 스레드 Thread, 스레드 스레드란 프로세스 안에서 실행되는 여러 흐름 단위를 말한다. 스레드를 이용하면 하나의 프로세스 내에서도 병렬적(동시적)으로 처리할 수 있다. 즉, 여러 개의 처리 루틴을 가질 수 있다. 프로세스는 대부분 독립적인 메모리 공간과 자원을 할당 받지만, 그에 비해 스레드는 다른 스레드와 많은 부분을 공유한다. 독립적으로 가지고 있는 부분 program counter(PC) : 하나의 스레드 실행에 있어서 다음으로 실행될 명령어 위치 register set stack 영역 다른 스레드와 공유하는 부분 code 영역, data 영역, heap 영역 OS 자원 Stack만 따로 할당 받는 이유? 스레드는 독립적인 동작을 수행하기 위해 존재한다. 즉, 독립적으로 함수를 호출할 수 있어야 하기 때.. 2024. 4. 15. BOJ G3 2206 벽 부수고 이동하기 JAVA 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 문제 읽기 해당 문제는 최단 경로를 구하는 문제라 판단하고 그리 어렵지 않을 것이라 생각했다. 하지만 20퍼센트 쯤에서 본 “틀렸습니다”라는 문구..!! 일단 문제 풀이를 시작해보자. 문제 풀기 NxM 크기의 일반적인 맵에 0으로 표현된 빈 칸, 1로 표현된 벽이 존재한다. 0, 0에서 N-1, M-1까지 가는 최단 거리를 찾으면서, 그 중에서 벽 한 개는 뚫을 수 있다. 이는 크게 어렵지 않게 생각했다. 최단 거리이기 때문에 DFS와 .. 2024. 4. 9. BOJ G4 1967 트리의 지름 JAVA 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 문제 읽기 일단 해당 문제는 트리.. 이지만 잊지 말아야 할 것은 트리도 어쨌든 그래프라는 것이다. 이 문제를 풀기 위해서 어떻게 할 지 고민하다가, 처음에는 플로이드 워샬이 생각났다. 모든 정점에서 모든 정점까지의 최단 거리를 구하는 알고리즘이기에, 이를 조금 수정하면 최장 거리를 구하는 것도 할 수 있을 것이라 생각했다. 그래서 알고리즘을 다시 살펴봤는데, 시간 복잡도가 V^3이라 어림도 없었다. (해당 문제에서 V = 10000이다) 두.. 2024. 4. 6. 이전 1 2 3 4 ··· 8 다음