Sobes.tech
Junior — Middle

Kako ukloniti uslov trke prilikom rada sa nitima uz minimalan kod?

sobes.tech АИ

Одговор од АИ

Da biste izbegli uslove trke prilikom rada sa nitima u Androidu (Java/Kotlin), možete koristiti sledeće minimalne alate za sinhronizaciju:

  • Ključna reč synchronized — najjednostavniji način da zaštitite kritičnu sekciju koda:
@Synchronized
fun increment() {
    counter++
}
  • Korišćenje atomskih promenljivih iz paketa java.util.concurrent.atomic, kao što je AtomicInteger:
val counter = AtomicInteger(0)
counter.incrementAndGet()
  • Korišćenje Volatile za promenljive, kako bi se obezbedila vidljivost promena između niti (ali ne štiti od uslova trke pri inkrementaciji).

Dakle, najminimalniji i često korišćen način je da obuhvatite pristup zajedničkim podacima u synchronized blok ili koristite atomike tipove.