【kotlin】lazy的线程安全模式

kotlin可以用by lazy初始化一个常量,保证此常量不会多次初始化。但对于Android开发,大部分都属于线程安全(在UI线程里),但lazy默认是线程安全的,会上锁(可以看Java字节码),这样会影响性能。因此需要单独设置LazyThreadSafetyMode(线程安全模式).

LazyThreadSafetyMode有三种:

SYNCHRONIZED同步:只会调用一次初始化方法。单例模式:懒汉式,线程安全

PUBLICATION:会调用多次初始化方法,但只有第一次的有效。

NONE:会调用多次,且会改变常量的值为最后一次的值。单例模式:懒汉式,线程不安全


使用:

val x by lazy(LazyThreadSafetyMode.NONE) { }

你可能感兴趣的:(【kotlin】lazy的线程安全模式)