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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

package prodcons2;<br />

import java.util.concurrent.locks.Condition;<br />

import java.util.concurrent.locks.Lock;<br />

import java.util.concurrent.locks.ReentrantLock;<br />

public class CubbyHole2 {<br />

private int contents;<br />

private boolean available = false;<br />

private Lock aLock = new ReentrantLock();<br />

private Condition condVar = aLock.newCondition();<br />

public int get(int who) {<br />

aLock.lock();<br />

try {<br />

while (available == false) {<br />

try {<br />

condVar.await();<br />

} catch (InterruptedException e) { }<br />

}<br />

available = false;<br />

System.out.format("Consumer %d got: %d%n", who, contents);<br />

condVar.signalAll();<br />

} finally {<br />

aLock.unlock();<br />

}<br />

return contents;<br />

}<br />

}<br />

public void put(int who, int value) {<br />

aLock.lock();<br />

try {<br />

while (available == true) {<br />

try {<br />

condVar.await();<br />

} catch (InterruptedException e) { }<br />

}<br />

contents = value;<br />

available = true;<br />

System.out.format("Producer %d put: %d%n", who, contents);<br />

condVar.signalAll();<br />

} finally {<br />

aLock.unlock();<br />

}<br />

}<br />

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

11

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

Saved successfully!

Ooh no, something went wrong!