Возможно ли, чтобы два потока столкнулись с тупиковой ситуацией с одним экземпляром объекта? - PullRequest
0 голосов
/ 31 января 2019

Насколько я знаю, двум потокам нужны как минимум два объекта и ситуация ожидания цикла, чтобы встретиться с тупиком. Но возможно ли двум потокам столкнуться с тупиком, центрирующим один экземпляр объекта?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

У вас не может быть тупика только с одним экземпляром объекта, потому что два потока не будут ожидать одного и того же объекта.Если объект используется одним потоком, этот поток не ожидает этого объекта, поэтому невозможно создать разлочку.

0 голосов
/ 31 января 2019

Не тупик, но вы можете легко голодать темы.

например.

Object lock=new Object();

Runnable run=new Runnable(){
  public void run(){
          synchronized(lock){
            lock.wait();
         }
       System.out.println("Im out");
   }
}

Thread t1=new Thread(someRun);
Thread t2=new Thread(someRun);

t1.start();
t2.start();

Ничего не будет напечатано, и 2 потока будут ждать вечно;

Вы выигралине блокируется на одном общем ресурсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...