Hi Experts, I am writing an application with NIO and Selector and found a strange issue that if I call "Selector.close()" while a thread is being blocked on that Selector(By calling "Selector.select()"), the call to "close()" will block indefinitely until "Selector.select()" returns. It's said in the Javadoc of selector.close() that: "If a thread is currently blocked in one of this selector's selection methods then it is interrupted as if by invoking the selector's wakeup method". So I guess under no circumstances should Select.close() block, right? However I came across another topic about the concurrency of Selector: "The selection operations synchronize on the selector itself, on the key set, and on the selected-key set, in that order. The close method synchronizes on the selector and all three key sets in the same order as in a selection operation." If it is true that Selector.select() and Selector.close() both synchronize on the selector itself, I think Selector.close() will block if other threads are blocked on Selector.select().
Now I am confused about which one is the correct behavior of Selector.close(), blocking or not? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

