본문
160504A(수)
Mobile/Android 2016. 5. 4. 14:08
LinkedList를 사용한 Queue
public class JobQueue {
private Object monitor = new Object();
private LinkedList jobs = new LinkedList();
public JobQueue() {
}
public Object pop() throws InterruptedException, NoSuchElementException {
Object o = null;
synchronized (monitor) {
if (jobs.isEmpty()) {
monitor.wait();
}
o = jobs.removeLast();
}
if (o == null) throw new NoSuchElementException();
return o;
}
public void removebyMax(int max) {
synchronized (monitor) {
if (jobs.size() > max) {
while (jobs.size() > max) {
jobs.removeFirst();
}
}
}
}
public void put(Object o) {
synchronized (monitor) {
jobs.add(o);
monitor.notify();
}
}
public void monitorStart() throws InterruptedException {
synchronized (monitor) {
monitor.notify();
}
}
public int size() {
return jobs.size();
}
public void clear() {
synchronized (monitor) {
jobs.clear();
}
}
}
Object를 사용해서 임계영역 처리를 했다.
처음보는 방법(?)이므로 잘 알아둘 것.
'Mobile > Android' 카테고리의 다른 글
170627(화) - Map (0) | 2017.06.27 |
---|---|
160510A(화) (0) | 2016.05.10 |
160405A(화) (0) | 2016.04.05 |
160405A(화) (0) | 2016.04.05 |
160405A(화) (0) | 2016.04.05 |
댓글