В приложении, которое я создал, сервер принимает сокетное соединение от клиентов и выполняет различную работу.Список клиентов хранится в clients
, который имеет тип LinkedList
.
Я использую оператор while с условным оператором, основанным на размере очереди clients
.
Я хочузнать, есть ли способ решить проблемы, описанные ниже ... чтобы сервер не зависал вечно.
while(clients.size()>0){ //few clients the queue is alive at the moment
//Suddenly, all clients in the queue shut down at this point in the while loop,
//Another thread, which checks clients knows that clients are dead
//so clients.size() becomes 0, but there is no way to check that at this point
//and server is expecting for connection clients forever
Socket socket= server.accept();
socket.close();
}
//printout results
edit
Список клиентов не простосуществующие клиенты.Это список живых клиентов.Этот список обновляется другим потоком.
У меня есть предложение while, потому что я хочу выполнить какую-то работу после того, как не останется живых клиентов.(либо закончил свою работу, либо просто умер)
Я хочу решить эту проблему, не используя исключение тайм-аута, потому что клиенты будут отвечать в случайном времени.(опять же живость клиентов проверяется другой веткой с техникой пульса)