Вы можете использовать x
в качестве разделителя для разделения строк, а затем сопоставить строки с типом int
number = "12x10"
lower, upper = list(map(int, number.split('x')))
# 12, 10
number = "3x3"
lower, upper = list(map(int, number.split('x')))
# 3, 3
Рекомендуемый путь состоит в том, чтобы использовать Запрос JMatch и Prevayler.execute (Запрос). Или непосредственно или при помощи разделения на подклассы.
Возвращенными результатами должны быть или примитивные значения или неизменные объекты. Если Вы планируете возвратить изменяемые объекты, необходимо разделить Запрос JMatch на подклассы, чтобы сделать эти глубокие копии. Таким образом, Вы получаете систему, которая блокирует каждое разумное чтение с другими (разумными) чтениями и записями. Это может убыстриться и упростить разработку, специально для разработчиков без многопоточного опыта программирования.
При необходимости в большем количестве производительности при высокой параллельной загрузке которая, как предполагается, является редким случаем, действительно можно использовать описанный выше мелкомодульной блокировки - "синхронизируемое" использование и java.util.concurrent.
Дополнительную информацию см. в этом обсуждении.
Это было действительно долгое время, так как я посмотрел на Prevayler (я использовал его в проекте POC приблизительно 6 или 7 лет назад). Я вполне уверен, что при выполнении всех чтений и записей через Prevayler никакая дальнейшая синхронизация не требуется - конечно, я не должен был в том, что я сделал, и это имело несколько потоков с помощью хранилища данных.