2012-10-02 4 views
1

일반 읽기 인터페이스를 사용하는 기능을 구현 중입니다. CharBuffer를 사용하여 데이터를 쓰는 java.lang.Readable 인터페이스를 사용하고 있습니다.java.lang.Readable.read에 대한 호출이 차단 되었습니까?

무엇을 말하지 않는 것은 read 호출이 차단되는지 여부입니다. 그러나 버퍼에 쓰여진 문자의 양을 반환하지만 나에게 그것은 대기중인 입력 전체가 쓰여지는 충분한 공간이 버퍼에 없다는 것을 나타낼 수 있기 때문에 일부만이 쓰여졌습니다. 하지만 버퍼에 공간이 충분하지만 입력이 없거나 버퍼보다 ​​적은 문자를 사용할 수 있다면 어떻게됩니까? read은 0 (또는 작은 정수)을 반환합니까, 그렇지 않으면 차단됩니까?

답변

2

예, 차단됩니다. 작업이 완료된 후이 메서드는 버퍼에 추가 된 char 값의 수를 반환하거나이 문자 소스가 끝에 있으면 -1을 반환합니다.

+1

+1 논 블로킹이 될 수 없다는 말은하지 않지만, AFAIK에는 JDK에서 필요한대로 차단하지 않는 구현이 없습니다. –

1

비 차단 인 경우 읽을 수있게되면 알려주는 메커니즘이 있어야합니다. 따라서 비 차단이 될 수 없습니다.

관련 문제