Существует простая ситуация, как:FileChannel.read() не бросать ClosedByInterruptException
нитяным: попробуйте прочитать из FileChannel
как
length = tun.read(tunPacket.buffer);
Эта операция является блокировать этот волоске ,
Резьба B: дождитесь ввода пользователем, (кнопка останова). Когда это событие происходит, вызывает метод A interrupt()
. Несмотря на то, что FileChannel
является орудием AbstractInterruptibleChannel
, это не бросать ClosedByInterruptException
Я использую Android 6.0, если материя, и есть the documentation
Я пытаюсь решить эту проблему, но выглядит невозможным ...
Хммм, из документа, используя общий смысл, я думаю, что вам лучше называть 'close' на' FileChannel' (в Thread B) не 'interrupt()' поток A ... – Selvin
Интересно, я попробовал это, но нет никакого 'AsynchronousCloseException' или какого-либо исключения. – SPYFF
да ... но какой tun.read (..) возвращается? не так ли? ... так что вы узнаете в Thread A что-то прерывать чтение ... *, но нет никакого AsynchronousCloseException или любого исключения * из документа, который должен был произойти (без исключения) – Selvin