Ответ 1
Таким образом, внутри BoneCP имеет количество подсчетов разделов соединений. Каждый раз, когда поток пытается работать с соединением, он принимает thread.getId() % partitionCount
и работает с соединением из этого пула. И у вас будет maxConnectionsPerPartition * partitionCount
количество соединений в целом.
Почему это положительно влияет на производительность? Ну, чтобы не использовать два потока одновременно на одном и том же соединении (очевидно, это было бы плохо), BoneCP должен сделать блокировку для освобождения или получения соединения. Но в то же время все остальные потоки, которые хотят сделать то же самое, должны ждать этого замка. Поэтому в некотором смысле вы можете выпустить или приобрести partitionCount
количество подключений параллельно.
Какой номер для его установки? Я думаю, что # из ядер - хорошее начало, так как в любом случае вы не будете больше работать параллельно. Но кроме этого старайтесь предсказать, сколько потоков будет гоняться за соединениями, измерять и повторять.
Кстати, большая часть мира уже более десяти лет полагается на c3po, и, по сути, количество разделов установлено равным 1. Таким образом, вы не можете ошибиться с ним.