The following blocking operations are fiber friendly in the current prototype; these methods do not pin the carrier thread when the operation blocks.

APIMethodsNotes
java.net.Socketconnect, read, write
java.net.ServerSocketaccept



java.nio.channels.SocketChannelconnect, read, writesocket adaptor connect, read, and write also okay
java.nio.channels.ServerSocketChannelacceptsocket adaptor accept also okay
java.nio.channels.DatagramChannelread, receive

socket adaptor receive also okay

write and send do not block

java.nio.channels.Pipe.SourceChannelread
java.nio.channels.Pipe.SinkChannelwrite


The following blocking operations are not currently fiber friendly; these methods pin the carrier thread when the operation blocks.

APIMethodsNotes
java.net.DatagramSocket/MulticastSocketreceiveThis will be resolved when DatagramSocket's implementation is replaced
java.net.InetAddress

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.SelectorselectSelection 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.