How did you do the non-threaded way? (I assume by "I ran my server for several weeks with 1 thread per client" you actually meant "1 thread").
If you used my tutorial it polls every 500ms so of course there will be some lag, I am working on an NIO version using a selector. Trouble is is that it gets even more confusing for most people here, and that tutorial was big/confusing enough.