The following blocking operations are fiber friendly in the current prototype; these methods do not pin the carrier thread when the operation blocks.
|java.net.Socket||connect, read, write|
|java.nio.channels.SocketChannel||connect, read, write||socket adaptor connect, read, and write also okay|
|java.nio.channels.ServerSocketChannel||accept||socket adaptor accept also okay|
socket adaptor receive also okay
write and send do not block
The following blocking operations are not currently fiber friendly; these methods pin the carrier thread when the operation blocks.
|java.net.DatagramSocket/MulticastSocket||receive||This will be resolved when DatagramSocket's implementation is replaced|
getByName, getAllByName, ..
These methods block in NSS/equivalent and are invoked using a ManagedBlocker to allow the number of carrier threads to increase when fibers are blocked in these lookup mechanism. Alternative options being explored are using a separate thread pool for lookups or dusting off the JNDI DNS provider.
|java.nio.channels.Selector||select||Selection operations are specified to synchronize on the selector and the selected-key set. May not be a concern as code using fibers should not need to use non-blocking I/O and Selectors.|