i ment network data and NIO.
quake 3 uses [icode]select[/icode], what is pretty much what NIO sockets do (http://docs.oracle.com/javase/7/docs/api/java/nio/channels/Selector.html#select()), what is what kryonet is using.
now, if you use NIO and process data on the same thread, it will be the select-thread which is the IO thread. so even then, if processing the data is faster then offloading the data, do not offload. that is for receiving data.
for sending data, its a bit different. writing into a SocketChannel is threadsafe. so you’re safe to use any thread you want to send data. you have three options :
- write immediately from any thread
- offload to a dedicated “sending” sink-thread
- register or modify your NIO selection key with OP_WRITE, offload to selector thread.
option 2 and 3 is basically offloading.
if it would be based on old school IO, not NIO, using the game-thread would freeze the VM in no time.
edit
kryonet uses OP_WRITE keys for sending by default. writing will never happen on the game thread, just message-serialization - which is not expensive. to answer the initial question : no, IO will not slow down your “logic” thread. kryonet handles offloading data to another thread for us.
it is also using the selector thread for deserialization and notification (reading). so if we use a listener to process network data without moving to another thread, it can stall the server/client. keep in mind that the game-state, if changed, should be threadsafe then. kryonet does not help us with that.