Я пишу java NIO, AsynchronousSocketChannel. В «завершить», по умолчанию большинство программистов использовать этот код:asynchronousSocketChannel записывает и прерывает другую часть программы
while(asynchronousSocketChannel.read(buffer).get() != -1)
Этот код причины ждать РЕСПОНД сервера, но я хочу, чтобы настроить его и не ждать, пока сервер, я имею в виду, я хочу чтобы сделать что-то еще и после этого чека, если там написано или не так, как показано ниже:
while(true){
if(asynchronousSocketChannel.read(buffer).get() != -1){
//do something
}
else{
//do something else
}
стараюсь кучу другого алгоритма, но он не работает. У кого-нибудь есть идея?
Просьба представить доказательства того, что большинство программистов используют этот код. Это полная трата времени, чтобы использовать асинхронные сокеты полностью синхронно, как это. Было бы проще использовать режим блокировки NIO или 'java.net.Socket'. – EJP
«В операции синхронного ввода-вывода поток вступает в действие и ждет, пока запрос ввода-вывода не будет завершен (программа« застревает », ожидая завершения процесса, без выхода). Когда происходит одно и то же действие в асинхронной среде поток выполняет операцию ввода-вывода с большей помощью ядра. Фактически, он немедленно передает запрос ядру и продолжает обрабатывать другое задание ». читая это, я предполагаю, что асинхронный вариант может быть лучшим выбором для моей системы, которая будет БОЛЬШОЙ. Я не понимаю, почему мой случай воспринимается как «полностью синхронный», по вашему мнению? – APNezh