Ваш код запускает сервер, ожидает подключения, считывает некоторые данные из первого подключенного клиента, а затем завершает работу после записи этих данных в файл.
При попытке сделать ваш сервер "неблокирующим«может означать, что вас просят изменить его на использование асинхронного ввода-вывода (вероятно, маловероятно), или это может означать, что вас просят обрабатывать более одного клиента одновременно - потому что в настоящее время вы можете обслуживать только один клиент, а затемваша программа завершает работу.
На этот вопрос сложно ответить, потому что ваш текущий код находится очень далеко от того места, где он вам нужен, и кажется, что некоторые чтения по сети, сокетам и Java-программированию в целом будутхороший способ начать.
Я бы порекомендовал Netty для выполнения всего, что связано с сетью в Java, и их примеры и документация хороши и просты для понимания.Удачи!