2017-10-26 2 views
-1

read() 메소드는 입력 자원 (키보드/파일/네트워크/프로그램)에 대해 스트림에서 바이트를 사용할 수있을 때까지 차단합니다. 단일 스레드 자바 프로그램에 대한java.io.InputStream - read()

public abstract int read() throws IOException 

1), blocked 상태로 java process를 이동하는 커널을 가능하게 read()의 차단합니까?

2) 멀티 스레드 Java 프로그램의 경우 하나의 스레드에서 read()을 차단하면 다른 스레드가 CPU 슬라이스를 차지할 수 있습니까? 자바 프로세스가 인 경우 에 계속 실행되면 CPU 시간 조각 인 때까지 상태가됩니다.

+1

현실적으로 단일 스레드 Java 프로세스를 찾을 수 없습니다. JVM 자체가 여러 스레드를 생성합니다. –

+0

@AndrewHenle JVM 시스템 스레드에 대해 이야기하고 있습니까? GC/컴파일러/VM/.. 런타임에서 내 자바 프로그램의 일부가 될 것입니다 – overexchange

+1

프로세스는 상태가 없으며 스레드 만 수행합니다. –

답변

1

단일 스레드 Java 프로그램의 경우 read()를 차단하면 커널이 Java 프로세스를 차단 된 상태로 이동시킬 수 있습니까?

단일 스레드 Java 프로그램과 같은 것은 없지만 그렇다면 그렇습니다.

다중 스레드 Java 프로그램의 경우 한 스레드에서 read()를 차단하면 다른 스레드가 CPU 슬라이스를 차지할 수 있습니까?

물론. 그렇지 않으면 스레드는 무의미합니다.

Java 프로세스가 실행중인 상태에서 CPU 시간 조각까지 계속됩니다.

예.