Короткий ответ: Вы не можете сделать этого.
От T-SQL нет никакого способа получить доступ к нескольким результатам вложенного вызова хранимой процедуры, не изменяя хранимую процедуру, как другие предположили.
, Чтобы быть завершенными, если процедура возвращала единственный результат, Вы могли бы вставить ее во временную таблицу или табличную переменную со следующим синтаксисом:
INSERT INTO #Table (...columns...)
EXEC MySproc ...parameters...
можно использовать тот же синтаксис для процедуры, которая возвращает несколько результатов, но он только обработает первый результат, остальные будут отброшены.
Если вы говорите о Java ConcurrentHashMap
, то ограничение будет произвольным :
Создает новую карту с теми же сопоставлениями, что и данная карта. Карта создана с емкостью 1.
По умолчанию не 32, а 16. И вы можете переопределить его с помощью аргумента конструктора уровень параллелизма
:
public ConcurrentHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
, чтобы вы могли:
Map<String, String> map = new ConcurrentHashmap<String, String)(128, 0.75f, 64);
, чтобы изменить его на 64. Значения по умолчанию (начиная с Java 6u17):
initialCapacity
: 16; loadFactory
: 0,75f; concurrencyLevel
: 16. Согласно источнику ConcurrentHashMap
, максимально допустимое значение составляет 65536
:
/**
* The maximum number of segments to allow; used to bound
* constructor arguments.
*/
static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
public ConcurrentHashMap(int initialCapacity,
float loadFactor, int concurrencyLevel) {
if (concurrencyLevel > MAX_SEGMENTS)
concurrencyLevel = MAX_SEGMENTS;
To use all the default concurrency level of 16 you need to have 16 cores using the map at the same moment. If you have 32 cores only using the map 25% of the time then only 8 of 16 segments will be used at once.
In summary, you need to have a lot of cores all using the same map and doing nothing much else. Real programs usually do something other than access one map.