We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent d3fad45 commit 656112eCopy full SHA for 656112e
misk-action-scopes/src/main/kotlin/misk/scope/SynchronizedLazy.kt
@@ -1,5 +1,8 @@
1
package misk.scope
2
3
+import java.util.concurrent.locks.ReentrantLock
4
+import kotlin.concurrent.withLock
5
+
6
private object UNINITIALIZED_VALUE
7
8
internal class SynchronizedLazy(
@@ -8,13 +11,15 @@ internal class SynchronizedLazy(
11
@Volatile
9
12
private var _value: Any? = UNINITIALIZED_VALUE
10
13
14
+ private val lock = ReentrantLock()
15
16
override val value: Any?
17
get() {
18
if (_value !== UNINITIALIZED_VALUE) {
19
return _value
20
}
21
- return synchronized(this) {
22
+ return lock.withLock {
23
val existingValue = _value
24
if (existingValue != UNINITIALIZED_VALUE) {
25
existingValue
0 commit comments