Я делаю серверную / клиентскую программу на Java. Сервер ожидает подключения, затем создает новый поток для этого подключения. Затем сервер возвращается и прослушивает соединения на других портах.
sck = srvrSckt.accept();
server.numConnections++;
System.out.print("Connection was made on " + server.port[i] + ".\n");
Connections conn = new Connections(sck);
server.threads[i] = new Thread(conn);
server.threads[i].start();
После того, как соединение было установлено, я хочу вернуться и проверить, были ли закрыты все предыдущие соединения. Затем я отмечу эти порты как доступные для будущих подключений. Есть ли способ сделать это?
Я прочитал, что лучший способ связи между потоками - это общая переменная. Тем не менее, я не могу найти хороший пример этого. Кроме того, я не уверен, будет ли работать переменная общего доступа, потому что я хочу проверять не только соединения, которые были успешно закрыты, но также и соединения, которые были внезапно отключены.
Любая помощь, которую вы можете предложить, будет принята с благодарностью. Спасибо вам.
EDIT:
Вот большая часть кода. Это может сделать мой вопрос более ясным.
if (server.isAvailable[i] == true)
{
availablePort = server.allPorts[i];
server.isAvailable[i] = false;
ServerSocket srvrSckt = new ServerSocket(availablePort);
System.out.println("Waiting for connection on port " + availablePort + "...");
srvrSckt.setSoTimeout(5000);
try {
sck = srvrSckt.accept();
server.numConnections++;
System.out.print("Connection was made on " + server.port[i] + ".\n");
Connections conn = new Connections(sck);
server.threads[i] = new Thread(conn);
server.threads[i].start();
} catch (Exception e) {
server.isAvailable[i] = true; // no connection was made
srvrSckt.close();
}