package com.basic.security.utils;
|
|
import java.util.List;
|
import java.util.Vector;
|
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.ReentrantLock;
|
|
public class ConcurrentList {
|
|
public final Lock lock = new ReentrantLock();
|
|
public long setTime = 0;
|
public List list = new Vector();
|
|
public boolean isEmpty() {
|
try {
|
lock.lock();
|
if (list.size() > 0) {
|
return false;
|
} else {
|
return true;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
lock.unlock();
|
}
|
return true;
|
}
|
|
public Object getFirst() {
|
try {
|
lock.lock();
|
if (list.size() > 0) {
|
return list.get(0);
|
} else {
|
return null;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
lock.unlock();
|
}
|
return null;
|
}
|
|
public void setFirst(Object object) {
|
try {
|
lock.lock();
|
if (list.size() == 0) {
|
list.add(object);
|
setTime = System.currentTimeMillis();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
lock.unlock();
|
}
|
}
|
|
public Object getFirst(long timeout) {
|
try {
|
lock.lock();
|
if (list.size() > 0) {
|
if (System.currentTimeMillis() - setTime < timeout) {
|
return list.get(0);
|
}
|
} else {
|
return null;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
lock.unlock();
|
}
|
return null;
|
}
|
|
public void removeFirst() {
|
try {
|
lock.lock();
|
if (list.size() > 0) {
|
list.remove(0);
|
setTime = System.currentTimeMillis();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
lock.unlock();
|
}
|
}
|
}
|