Hashtable
и ConcurrentHashMap
не позволяют null
ключи или null
значения.
Collections.synchronizedMap(Map)
синхронизируется весь операции (get
, put
, size
, и т.д.).
ConcurrentHashMap
поддержки полный параллелизм извлечений и корректируемый ожидаемый параллелизм для обновлений.
, Как обычно, существует параллелизм - наверху - включенные компромиссы скорости. Действительно необходимо полагать, что подробные требования параллелизма приложения принимают решение, и затем тестируют код, чтобы видеть, достаточно хорошо ли это.
Я бы не стал делать это динамически, поскольку выигрыш не стоит сложности или предполагаемой экономии. Также, если вы установите visible = false
, имейте в виду, что состояние просмотра все еще включено для ваших элементов управления. Если вас беспокоят данные взад и вперед и вы имеете дело с большим состоянием просмотра, убедитесь, что вы отключили состояние просмотра для всех элементов управления или для родительской панели, которая их содержит. У вас будут те же неудобства для поддержания их состояния при обратной передаче, что и при выполнении этого динамически.
Кроме того, делать это нединамически намного проще для следующего человека, работающего с кодом. Макет очевиден, и его легче визуализировать, чем пытаться выяснить, какой код, когда помещает, что где.
Создание элементов управления динамически действительно не делает ' Это принесет вам много всего, за исключением исключения состояния просмотра и, возможно, незначительной обработки на стороне сервера. Я думаю, вам будет трудно даже измерить большую часть заметной разницы, даже под нагрузкой, между элементом управления, не связанным с состоянием просмотра, и накладными расходами, связанными с динамическим добавлением их по мере необходимости.
Наконец, легче не делать это динамически Так почему бы сначала не выбрать самый простой маршрут и не посмотреть, не проблема ли это. Если это действительно станет проблемой, доработайте ее там, где это необходимо.
.Visible = false
- вполне разумный подход для этого. Не беспокойтесь о скорости этого метода, пока вы не докажете с помощью профилирования, что он необходим.
Что, если бы вы поместили элементы управления с разными ролями на разные панели и просто видимую / невидимую всю панель
Еще одно неудобство с динамическими элементами управления - это большой объем нестабильного кода, который вам нужно написать для их обработки, и головные боли при их отладке. Если у вас нет чрезвычайно сложных элементов управления, которые занимают много времени, или если вы действительно не обнаружили проблему с производительностью, я бы настоятельно рекомендовал невидимый метод (и регулярно это делает). Это принцип KISS в действии (не говоря уже о принципе «без предварительной оптимизации»).