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).

  • Enlace de Android Kotlin ImageView
  • La debugging de Android Kotlin Task no se encuentra en el proyecto raíz
  • La cadena cruda de Kotlin arroja un error en blanco
  • Problema de Kotlin Gradle
  • ¿Kotlin estructural equality check super types?
  • En TornadoFX, ¿cómo puedo separar layouts en diferentes classs y luego usarlos en el generador?
  • Kotlin utiliza aserciones de time de ejecución para la comprobación nula - ¿Sobrecarga de performance?
  • Analizando un object json con un campo dynamic en Kotlin
  • Error de desencryption de Phpseclib al descifrar el contenido encriptado en Java
  • Netty wss socket socket drops connection
  • Kotlin, Mockito y Android Test Instrumentation. La propiedad de Lateinit no se ha inicializado