public class Test {
private final Map<URI, Set<TestObject>> uriToTestObject = new HashMap<URI, Set<TestObject>>();
private final Map<Channel, TestObject> connToTestObject = new HashMap<Channel, TestObject>();
private static class TestObject {
private URI server;
private Channel channel;
private final long startNano = System.nanoTime();
private AtomicInteger count = new AtomicInteger(0);
}
}
Это класс, который я планирую использовать в качестве диспетчера соединений. Есть две карты: одна будет иметь uri сервера для сведений о соединении, т. е. тестовый объект, а другая будет иметь канал для TestObject
, т. е. детали записи соединения, когда соединение будет создано, поместите testobject канала и uri сервера в соответствии с требованиями на обеих картах, когда подайте другой запрос сначала проверьте карту для этого сервера uri и получите канал, аналогично, когда канал закрыт, удалите с обеих карт соответствующие записи, т.е. объект канала и тестовый объект, должен ли я использовать параллельную хэш-карту или должен использовать HashMap
, а затем синхронизировать на методы добавления и удаления, также я буду использовать переменную count AtomicInteger
для целей статистики, она будет увеличиваться и уменьшаться.
Мой вопрос здесь в многопоточной среде, нужно ли мне синхронизировать мои методы, даже если я использую ConcurrentHashmap
, так как я буду выполнять некоторые операции на обеих картах одним методом.