Можно ли прервать BufferedReader.readLine() с помощью Future.cancel(true)?

Допустим, я запустил поток, и у меня есть что-то вроде этого:

 ...//initiate all the socket connection
 future = executor.submit
 (  new Runnable()
    {   public void run()
        {   ...
            ...      
            while ((str = in.readLine()) != null)
            {  //do something here

            }

    }

 );

executor — это объект ExecutorService, а in — объект BufferedReader

Я знаю, что вы можете закрыть сокет из другого потока, чтобы прервать этот поток. Я пытаюсь использовать метод future.cancel(true), несмотря на то, что он возвращает true, кажется, что поток все еще работает, кто-нибудь знает, почему?, или in.readLine() не может быть прерван таким образом?

6
задан neo 2 April 2012 в 15:55
поделиться