join
-
망아지 같은 스레드를 잘 사용하기 위해서는 그들의 상태를 잘 이해하고 제어해야 한다. 스레드의 우선 순위와 상태 스레드의 우선순위멀티스레드 환경에서 프로그램의 효율성과 안정성을 보장하기 위해서는 스레드의 우선순위와 상태 제어가 필수적이다.스레드의 우선순위는 스레드가 CPU 시간을 얼마나 많이 할당받을 수 있을지를 결정하는 역할을 수행한다. 우선순위가 높은 스레드는 우선 순위가 낮은 스레드보다 더 자주 실행될 "가능성"이 크다. 다음과 같은 상황을 고민해보자.메신저를 쓰면서 파일 전송이 좀 느릴 수는 있지만 채팅이 전달 안되는것은 참기 어렵다.사용자 UI를 담당하는 스레드는 빠른 응답성을 위해 높은 우선순위를 부여한다.G.C를 담당하는 스레드는 평소에는 낮은 우선순위를 가지다가 메모리 부족 등 급박한 ..
[Thread] 02. Thread의 상태와 제어망아지 같은 스레드를 잘 사용하기 위해서는 그들의 상태를 잘 이해하고 제어해야 한다. 스레드의 우선 순위와 상태 스레드의 우선순위멀티스레드 환경에서 프로그램의 효율성과 안정성을 보장하기 위해서는 스레드의 우선순위와 상태 제어가 필수적이다.스레드의 우선순위는 스레드가 CPU 시간을 얼마나 많이 할당받을 수 있을지를 결정하는 역할을 수행한다. 우선순위가 높은 스레드는 우선 순위가 낮은 스레드보다 더 자주 실행될 "가능성"이 크다. 다음과 같은 상황을 고민해보자.메신저를 쓰면서 파일 전송이 좀 느릴 수는 있지만 채팅이 전달 안되는것은 참기 어렵다.사용자 UI를 담당하는 스레드는 빠른 응답성을 위해 높은 우선순위를 부여한다.G.C를 담당하는 스레드는 평소에는 낮은 우선순위를 가지다가 메모리 부족 등 급박한 ..
2024.07.04 -
다음의 무거운 작업을 수행해야한다고 생각해보자. public long heavyWork(int th) { long result = 1; for (int i = 0; i < Integer.MAX_VALUE; i++) { result += i; } System.out.printf("%d th done: %d\n", th, result); return result; } 위의 작업을 총 10번 해서 총 결과를 알고 싶다면 아래와 같이 작업할 수 있다. public void getSumByNormal() { long first = System.currentTimeMillis(); long result = 0; for (int i = 0; i < 10; i++) { result += heavyWork(i); } l..
Thread의 join 사용 예다음의 무거운 작업을 수행해야한다고 생각해보자. public long heavyWork(int th) { long result = 1; for (int i = 0; i < Integer.MAX_VALUE; i++) { result += i; } System.out.printf("%d th done: %d\n", th, result); return result; } 위의 작업을 총 10번 해서 총 결과를 알고 싶다면 아래와 같이 작업할 수 있다. public void getSumByNormal() { long first = System.currentTimeMillis(); long result = 0; for (int i = 0; i < 10; i++) { result += heavyWork(i); } l..
2019.08.03