Нет, ResultSet не должен подвергаться воздействию более чем одного потока.
У ResultSet никогда не должно быть больше масштаба, чем один метод: выполнить запрос, сопоставить ResultSet в объект или коллекцию и закрыть ResultSet в той же области, в которой он был создан.
Правильный способ закрытия ResultSet находится в блоке finally в собственном try/catch.
Посмотрел код в другом вопросе. Это требует серьезного, полного рефакторинга. Неудивительно, что у вас проблемы с этим. Вот несколько советов:
- Следуйте соглашениям по кодированию Sun Java. Это может показаться тривиальным, но все, что делает ваш код труднее читать, - плохая идея. Ваши классы «doComms» и «savetodatabase» нарушают соглашение «имена классов начинаются с заглавной буквы».
- Именование вопросов. «doComms» - это не моя идея хорошей абстракции.
- Магические числа/константы повсюду. Они сделают ваш код сложнее изменить позже.
- Java - объектно-ориентированный язык; вы пишете в другом стиле. Когда я вижу «insert studentinfo», это заставляет меня задаться вопросом, где находится класс Студента.
- Ваш JDBC-код не обрабатывает ресурсы должным образом.
Любопытно - вы пытаетесь научиться писать сервер? Есть ли причина, по которой вы не использовали бы механизм сервлета в качестве основы для этого приложения? Розетки - это очень низкое место, чтобы начать решать такую проблему.
, но не сделал соединение для каждого ада, привело к большому количеству подключений и закрытию его evrytime привести к накладным расходам –
Нет, если вы используете пул соединений.Кроме того, неэффективное решение лучше, чем «решение», которое ломается из-за ошибок параллелизма. –
как вы оцениваете проксиометр для объединения пула? есть ли лучший инструмент, который можно использовать? –