为什么Kotlin中没有并发关键字?

我只是潜入这个惊人的语言,这一件事情令我感到沮丧。 为什么没有同步的关键字?

到目前为止,我的研究放弃了一个解决方案,你包装一些高层次的类,并使用它们来处理并发…

给定一个关于纯kotlin的项目,如果需要处理并发性的小型高度优化组件,我们应该做些什么…我的印象是kotlin是java的一种辅助语言,在kotlin中编写90%的代码,但是一些不可能用kotlin表示的java代码。

这是正确的吗? 这是它的目的是什么?

    科特林1.1 Coroutines被释放 ,它带来了async..await ! 在Kotlin参考文档 , Kotlinx Coroutines库和这个深入的例程中详细了解它

    在Kotlin协程之外,你有这些选择:

    • Kovenant图书馆向Kotlin添加了诺言
    • Quasar库提供轻量级线程和延续
    • synchronizedvolatile注释直接映射到Java中的相同关键字
    • Kotlin中的synchronized块来自内联函数synchronized()
    • Kotlin有一个Kotlin.concurrent包和扩展,具有新的功能,也是对JDK类的扩展。
    • 你可以访问java.util.concurrent包中的任何东西,比如ConcurrentHashMapCountdownLatchCyclicBarrierSemaphore
    • 您可以访问java.util.concurrent.locks包中的任何内容,并且Kotlin具有其中一些扩展,包括很酷的withLock()扩展函数以及ReentrantReadWriteLock类似read / write扩展 。
    • 你可以访问java.util.concurrent.atomic包中的任何东西,比如AtomicReferenceAtomicLong ,…
    • 您可以使用waitnotify对象

    你拥有Java拥有的一切以及更多。 您的短语“同步和锁定”是由上面的列表满足,然后你有更多,没有语言的变化。 任何语言功能只会使它更漂亮。

    因此,您可以使用Kotlin小型运行库,JDK中的JVM运行库以及任何其他需要使用的JVM库来创建100%的Kotlin代码。 不需要Java代码,只需要Java(as-in JVM)库。

    一些功能的快速示例:

     class SomethingSyncd { @Synchronized fun syncFoo() { } val myLock = Any() fun foo() { synchronized(myLock) { // ... code } } @Volatile var thing = mapOf(...) }