Я работаю над кодом, в котором я создаю HikariDataSource в качестве ленивого значения. Я применил режим LazyThreadSafetyMode.SYNCHRONIZED, поэтому я не понимаю, почему инициализация выполняется дважды, когда я запускаю новый поток, который читает это значение
// in module database
val dataSource: HikariDataSource by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
HikariDataSource(dataSourceConfig(databaseConfig))
}
fun initDatabase() {
dataSource.connect().let { //do stuff}
}
// in main module
fun main() {
initDatabase()
thread {
dataSource.connect().let { // initializes a new data source... }
}
}
Я ожидаю, что HikariDataSource будет инициализирован один раз, но по какой-то причине он вызывается дважды ...
Я думаю, что тот факт, что я выставляю эту переменную другому gradle-проекту, может повлиять на нее, но не уверен почему ..