为什么每个线程多次初始化惰性变量

时间:2019-04-17 21:02:02

标签: kotlin ktor

我正在处理一些代码,在其中我将HikariDataSource创建为一个按惰性值。我确实应用了LazyThreadSafetyMode.SYNCHRONIZED模式,所以我对为什么在启动一个读取该值的新线程时为什么要进行两次初始化感到困惑

MakeString()

我希望将HikariDataSource初始化一次,但是由于某种原因,它被调用了两次... 我认为我将该变量暴露给另一个gradle项目的事实可能会影响它,但不知道为什么。

1 个答案:

答案 0 :(得分:1)

嗯,我想我只是回答了我自己的问题...

访问dataSource对象的主要模块是配置为热重装的ktor服务器。 禁用hotreload并再次尝试后,该变量未初始化两次。

我想ktor正在使用类加载器进行某些操作以进行热重载,从而导致此事情发生。