我可以从一个线程写入SocketChannel
,而Selector#select()
可能会选择相同的SocketChannel
来进行IO操作其他线程?它是线程安全的吗?或者我是否必须将 ByteBuffer 委托(delegate)给其他线程(无限期地执行 Selector#select()),然后每次写入 SocketChannel Selector#select()
调用。
此外,SelectionKey#interestOps(int)
将兴趣操作设置为线程安全的吗?或者我是否必须将相同的任务委托(delegate)给其他线程(无限期地执行Selector#select()
)。
最佳答案
是的,一般来说可以。 select()
中被阻止的线程在被阻止时不会使用 ByteBuffer
。如果它在其他地方这样做,当然您需要同步或采取其他措施。
关于java - 从一个线程写入套接字 channel 并从另一个线程选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385504/