在选择器线程之外的其他线程中设置SelectionKey的interestOps是否安全? (Java Nio)

时间:2015-02-04 13:45:39

标签: java nio

我见过很多JavaNio示例。所有这些都在选择器线程中设置SelectionKey的interestOps。

他们为什么这样做? 在选择器线程以外的其他线程中设置SelectionKey的interestOps是否安全?

或者有可能发生的异常情况,所以他们这样做了吗?

1 个答案:

答案 0 :(得分:1)

SelectionKey JavaDoc说:

  

读取和写入兴趣集的操作通常将与选择器的某些操作同步。具体如何执行此同步依赖于实现:在一个简单的实现中,如果选择操作已在进行中,则读取或写入兴趣集可能会无限期地阻塞;在高性能实现中,如果有的话,读取或写入兴趣集可能会暂时阻止。

结合墨菲定律,它实际上保证你只会遇到“天真”的实现,所以最好是安全而不是抱歉,只能从选择器线程中使用兴趣操作,保证不会阻塞。