Kotlin sincronizado

Estuve estudiando multi hilo de Java en las últimas semanas. Aprendí acerca de synchronization, y entendí que sincronizados evitaba que varios hilos accedieran a la misma propiedad al mismo time. Escribí este código para ejecutar dos hilos en el mismo hilo.

val gate = CyclicBarrier(3) val obj = SynchronizedCounter() var nah = object : Thread() { override fun run() { gate.await() obj.increment() } } var blah = object : Thread() { override fun run() { gate.await() println(obj.value()) } } nah.start() blah.start() gate.await() class SynchronizedCounter { private var c = 0 @Synchronized fun increment() { c++ } @Synchronized fun decrement() { c-- } @Synchronized fun value(): Int { return c } } 

Salida: 0 ¿No devolvería 1? Porque el segundo hilo se ejecuta después de uno

Tanto nah como blah configuran trabajos para ejecutar en un hilo diferente al suyo. Entonces, cuando cada llamada start , solo están marcando el progtwigdor de subprocesss para iniciarlos. start vuelve inmediatamente y el hilo actual continúa ejecutando la línea principal de código hasta que algo sucede para hacerlo diferir. En ese punto, el progtwigdor lo hace, ejecutando todo lo que está listo y esperando para ejecutarse. No debe esperar una order en particular, ni debe intentar pnetworkingecir una order. Es por eso que tienes construcciones de synchronization para usar en tu código.

Podrías ejecutar tus tareas en un Ejecutor de un solo hilo como en esta respuesta SO (para java, sin embargo, tendrías que adaptarte).

  • package de caja de serpiente detekt
  • ¿Por qué se eliminó el bucle indexado en Kotlin?
  • Kotlin Equivalente nativo de System.exit (-1)
  • Generar SerialVersionUID para las classs de Kotlin en IntelliJ
  • Importación de objects nesteds / funciones de objects en Kotlin
  • Reciclador Ver drag and drop en diferentes types de vista
  • Cómo leer un file de text de Firebase a la aplicación de Android
  • Observables opcionales en combinar
  • Apache Tomcat 8.0 no puede cargar la class de servlet escrita en Kotlin usando Eclipse para Java EE, Mars 2
  • Kotlin type mistmatch () -> SomeType vs SomeType
  • Kotlin JS - Acceso a las properties HTML DOM