Deadlock (Взаимная блокировка)
Deadlock (взаимная блокировка) — это ситуация, в которой два или более потоков блокируются навсегда, ожидая ресурсы, захваченные друг другом. Это приводит к тому, что ни один из потоков не может продолжить выполнение.
Deadlock обычно происходит в многопоточных программах при неправильном управлении блокировками ресурсов. Основные причины deadlock:
val lock1 = Any()
val lock2 = Any()
fun main() {
val thread1 = Thread {
synchronized(lock1) {
Thread.sleep(100)
synchronized(lock2) {
println("Thread 1")
}
}
}
val thread2 = Thread {
synchronized(lock2) {
Thread.sleep(100)
synchronized(lock1) {
println("Thread 2")
}
}
}
thread1.start()
thread2.start()
thread1.join()
thread2.join()
}