为什么没有用于同步/并发的关键字?
到目前为止,我的研究为我提供了一种解决方案,您包装了一些高级类并使用它们来处理并发。
给定一个纯Kotlin项目,如果需要一个小型的高度优化的组件来处理并发等,该怎么办?
我的印象是Kotlin是Java的辅助语言,可以用Kotlin编写90%的代码,但有一些Java语言无法用Kotlin表示。
这是正确的吗?这是原来的样子吗?
Kotlin 1.1 with Coroutines已发布,并带来了它async..await!在Kotlin参考文档,Kotlinx Coroutines库和示例中深入了解的Couroutines中了解有关此内容的更多信息。
async..await
在Kotlin协程之外,您可以选择以下选项:
@Synchronized
@Volatile
synchronized
synchronized()
Kotlin.concurrent
java.util.concurrent
ConcurrentHashMap
CountdownLatch
CyclicBarrier
Semaphore
java.util.concurrent.locks
withLock()
read
write
ReentrantReadWriteLock
java.util.concurrent.atomic
AtomicReference
AtomicLong
wait
notify
您拥有Java拥有的所有东西以及更多。上面的列表满足了您的短语 “同步和锁定” ,然后您甚至可以拥有更多语言而无需更改语言。任何语言功能都只会使其更漂亮。
因此,您可以使用小型Kotlin运行时,JDK中的JVM运行时以及要使用的任何其他JVM库,获得100%的Kotlin代码。不需要Java代码,仅需要Java(作为JVM)库。
一些功能的快速样本:
class SomethingSyncd { @Synchronized fun syncFoo() { } val myLock = Any() fun foo() { synchronized(myLock) { // ... code } } @Volatile var thing = mapOf(...) }