thread-safe usage of performance counters list

#KT-8046 Fixed
This commit is contained in:
Dmitry Jemerov
2015-06-15 14:11:50 +02:00
parent c369949d90
commit ed7cc67f19
@@ -47,7 +47,10 @@ public class PerformanceCounter jvmOverloads constructor (val name: String, val
public fun currentThreadCpuTime(): Long = threadMxBean.getCurrentThreadUserTime()
public fun report(consumer: (String) -> Unit) {
allCounters.forEach { it.report(consumer) }
val countersCopy = synchronized(allCounters) {
allCounters.toTypedArray()
}
countersCopy.forEach { it.report(consumer) }
}
}
@@ -55,7 +58,9 @@ public class PerformanceCounter jvmOverloads constructor (val name: String, val
private var totalTimeNanos: Long = 0
init {
allCounters.add(this)
synchronized(allCounters) {
allCounters.add(this)
}
}
public fun increment() {