两者之间是否存在差异(除了偏好)
someLock.withLock {
sharedResource.operation()
}
Run Code Online (Sandbox Code Playgroud)
和
synchronized(someLock) {
sharedResource.operation()
}
Run Code Online (Sandbox Code Playgroud)
在科特林?
s1m*_*nw1 12
扩展withLock
适用于Lock
类似的实例ReentrantLock
,而synchronized
可以与任何对象一起使用.
val lock = ReentrantLock()
fun syncWithLockTest(): Int = lock.withLock { 123 }
val anyLock = Any()
fun syncWithArbitraryObjTest(): Int = synchronized(anyLock) { 123 }
Run Code Online (Sandbox Code Playgroud)
注意,这synchronized
是Kotlin中的一个返回值的函数.这使它比Java的synchronized关键字更强大.从技术上讲,只要您对需要彼此同步的所有相关代码块使用相同的对象,它就不会对您锁定的对象产生影响.
归档时间: |
|
查看次数: |
4201 次 |
最近记录: |