Как сделать сервер для игры на Java?
Я думаю, вам для начала пригодятся эти ссылки (за некоторыми одна статья, некоторые идут на целые разделы):
gamedev.9fog.com/tag/java-server
javatalks.ru/topics/24659?page=1#121338
https://forum.zone-game.info/showthread.php?t=24211
habrahabr.ru/post/229045
habrahabr.ru/post/136765
Копайте в сторону NIO. Можете здесь на русском поискать www.youtube.com/user/KharkovITCourses/videos 
Если подвисает раз в 20 сек., то скорее всего срабатывает GC. Можно попробовать добавить опцию -Xmx 1G  при старте JVM, тем самым выделив 1G оперативки, тогда GC будет реже срабатывать. 
Можно еще и сам GC потюнить, гуглите на тему GC CMS tuning или Java GC types для смены GC на какой-нибудь другой.