Страницы

Поиск по вопросам

пятница, 5 октября 2018 г.

Код который на 100% приводит к deadlock

Мне нужно написать максимально простой код который в 100% случаев запуска будет приводить к взаимной блокировке, но все примеры которые я рассматриваю дают только некоторую вероятность. Возможно ли такое написать, если да, то как бы это могло выглядеть в самом простом варианте?


Ответ

public class TestThread { public static Object Lock1 = new Object(); public static Object Lock2 = new Object();
public static void main(String args[]) { ThreadDemo1 T1 = new ThreadDemo1(); ThreadDemo2 T2 = new ThreadDemo2(); T1.start(); T2.start(); }
private static class ThreadDemo1 extends Thread { public void run() { synchronized (Lock1) { System.out.println("Thread 1: Holding lock 1...");
try { Thread.sleep(10); } catch (InterruptedException e) {} System.out.println("Thread 1: Waiting for lock 2...");
synchronized (Lock2) { System.out.println("Thread 1: Holding lock 1 & 2..."); } } } } private static class ThreadDemo2 extends Thread { public void run() { synchronized (Lock2) { System.out.println("Thread 2: Holding lock 2...");
try { Thread.sleep(10); } catch (InterruptedException e) {} System.out.println("Thread 2: Waiting for lock 1...");
synchronized (Lock1) { System.out.println("Thread 2: Holding lock 1 & 2..."); } } } } }
Источник

Комментариев нет:

Отправить комментарий