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||connect, read, and write on the socket adaptor obtained via SocketChannel::socket also okay|
|java.nio.channels.ServerSocketChannel||accept||accept on the socket adaptor obtained via ServerSocketChannel::socket also okay|
|java.nio.channels.DatagramChannel||read, receive||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||receive||Need to investigate if receive can be done without synchronizing on the DatagramPacket (unspecified but long standing behavior)|
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.|