Commons Net FTPClient
클래스를 사용하여 주기적으로 FTP 사이트를 폴링하고 파일을 다운로드하려고합니다. 때로는 스레드가 사이트에서 읽으려고 할 때 무기한으로 블로킹하고 다른 누군가가이 문제를 겪고 어떤 해결 방법을 제공 할 수 있는지 궁금해했습니다.Commons Net FTPClient가 읽기 차단시 감지하지 못하도록 차단합니다.
나는 의 retrieveFileStream(String)
메서드를 사용하여 InputStream에 대한 핸들을 얻었습니다.이 핸들을 읽으려고 시도합니다. 아래는 차단 된 스레드의 부분 스택 추적입니다.
"FTP File Poll Thread" prio=10 tid=0x083b0800 nid=0x6324 runnable [0x65b5b000..0x65b5beb0]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
- locked <0x5c851928> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.PushbackInputStream.read(PushbackInputStream.java:122)
at org.apache.commons.net.io.FromNetASCIIInputStream.__read(FromNetASCIIInputStream.java:75)
at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:170)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
이것은 Java에서 I/O를 차단하는 일반적인 문제이며이를 피하거나 스레드를 죽일 수있는 방법이 없다는 사실입니다. – skaffman
그게 내가 생각한거야 :-(나는 어딘가에 비 차단 FTP 클라이언트가 있기를 바랬다. – Adamski