07.03.2014 Views

Programowanie współbieżne w języku Java

Programowanie współbieżne w języku Java

Programowanie współbieżne w języku Java

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Zakleszczenie (ang. Deadlock) (<strong>Java</strong> Specialists’ Newsletter 147). Aplikację należy uruchomid z<br />

poziomu systemu operacyjnego.<br />

public class BadClass extends Thread {<br />

private final Object lock1;<br />

private final Object lock2;<br />

}<br />

public BadClass(Object lock1, Object lock2) {<br />

this.lock1 = lock1;<br />

this.lock2 = lock2;<br />

}<br />

public void run() {<br />

while(true) {<br />

synchronized(lock1) {<br />

synchronized(lock2) {<br />

System.out.print('.');<br />

System.out.flush();<br />

}<br />

}<br />

}<br />

}<br />

public static void main(String[] args) {<br />

Object lock1 = new Object();<br />

Object lock2 = new Object();<br />

BadClass bc1 = new BadClass(lock1, lock2);<br />

BadClass bc2 = new BadClass(lock2, lock1);<br />

bc1.start();<br />

bc2.start();<br />

}<br />

Wyjście z zakleszczenia z generacją zrzutu:<br />

Windows: Ctrl+Break<br />

Unix: Ctrl+\ lub kill -3<br />

Analiza zrzutu – informacja o zakleszczeniu.<br />

Lab. „<strong>Programowanie</strong> <strong>współbieżne</strong> w <strong>języku</strong> <strong>Java</strong>”<br />

5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!