У меня есть следующий класс для таблицы маршрутизатора с синхронизированными методами:Синхронное карту или синхронизированные методы
public class RouterTable {
private String tableForRouter;
private Map<String,RouterTableEntry> table;
public RouterTable(String router){
tableForRouter = router;
table = new HashMap<String,RouterTableEntry>();
}
public String owner(){
return tableForRouter;
}
public synchronized void add(String network, String ipAddress, int distance){
table.put(network, new RouterTableEntry(ipAddress, distance));
}
public synchronized boolean exists(String network){
return table.containsKey(network);
}
}
Несколько потоков будут читать и писать в HashMap. Мне было интересно, было бы лучше удалить синхронизированный метод и просто использовать Collections.synchronizedMap (новый HashMap < String, RouterTableEntry()). Какой самый разумный способ в Java сделать это?
Зависит, действительно, так как есть возможность использовать 'ConcurrentHashMap', который является частью Java Concurrency: http://stackoverflow.com/questions/510632/whats-the-difference-between-concurrenthashmap-and-collections -синхронизированная карта и http://www.ibm.com/developerworks/java/library/j-jtp08223/ – birryree