답변

2

"프로세스 내부"라고 말할 때 마음에 무엇이 있는지 잘 모르겠지만 일반적으로 스레드의 스케줄링은 운영 체제에 달려 있습니다. 대부분의 OS가 스레드 및/또는 프로세스 우선 순위. Java에서는 Thread.setPriotity 메소드로 스레드 우선 순위를 설정할 수 있지만 Java 런타임 라이브러리는 알고있는 프로세스 우선 순위를 노출하지 않습니다 (일반적으로 플랫폼 특정 라이브러리를 사용할 수는 있지만).

스레드가 실제로 병렬로 실행되는지 여부는 언제든지 개별 프로세서에서 예약되는지 여부에 따라 달라집니다. 그렇지 않으면 병렬로 실행되지 않지만 서로 선점 할 수 있습니다. 이것은 OS가 일시 중지하고 다른 스레드로 전환하기 전에 잠시 동안 스레드를 실행 함을 의미합니다.

많은 OS가 스레드에 프로세서 "선호도"를 할당하는 방법을 제공합니다. 스레드는 특정 프로세서에서 실행될 가능성을 높이기 위해 사용할 수 있지만 표준 Java 런타임 라이브러리에서도 노출되지 않습니다 .

+0

사실 저는 알고 싶습니다. 프로세서 내부에 2 개의 프로세스 즉 단일 코어가 있고 그 중 하나가 우리의 Java 프로그램의 프로세스라고 가정합니다. 우리 프로그램에는 2 개의 스레드가 있습니다. 프로세서가 프로그램 프로세스에 시간을 주면 실행 방법은 다음과 같습니다. 첫 번째 옵션은 스레드가 동시에 코드를 실행하는 두 번째 옵션입니다. 두 번째 옵션은 스레드가 차례로 결정합니다. 스레드 스케줄러와 그들의 코드를 실행? –

+0

프로세서 코어가 하나만있는 경우 스레드를 실제로 병렬로 실행할 수 없습니다. 따라서 시나리오를 올바르게 이해한다면 두 번째 옵션 만 가능하다고 생각합니다. – Aaron

관련 문제