I'm working on a MUD in java. I read player input every tick, but I'm using Scanner
which uses blocking operations. I want to have non-blocking input.
I've looked at the nio
package which has a Selector
class, but I'm not sure how to use it with regard to System.in
. I figure I'll definitely need it once I'm running a server, but for now everything is offline.
I've tried extending the main class from Applet
and overriding keyDown
, but that just meant input was no longer accepted after the first one. Sure, I wasn't blocking anything anymore, but then there was no more input. keyDown
never got called again, I guess.
Perhaps threads can be interrupted even when they are executing blocking operations?
Thanks for any insight into this problem.