dnsjnio is an extension for dnsjava. dnsjava requires each query to run in its own thread on its own port. dnsjnio allows large numbers of queries to be run in a single thread using the non-blocking nio library.
We use this project in our production code which handles more than 50k requests per minute. It works superbly, and is a real difference maker in our success.