📄 timedqueue.java
字号:
package com.cxz.httpchat.util;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import com.cxz.httpchat.message.Message;
public class TimedQueue implements Queue<Message> {
private long lastAccess;
private int cycleSeconds;
private static final int UNIT_CONVERSION = 1000;
private Queue<Message> queue = new ConcurrentLinkedQueue<Message>();
public List<Message> toList(){
resetLastAccess();
List<Message> messages = new ArrayList<Message>();
while(!queue.isEmpty()){
messages.add(queue.remove());
}
return messages;
}
/**
* To point out whether this Queue is needed clear
* @return
*/
public boolean isOutOfDate(){
System.out.println(System.currentTimeMillis() - lastAccess);
return System.currentTimeMillis() >= lastAccess + cycleSeconds * UNIT_CONVERSION;
}
public int getCycleSeconds() {
return cycleSeconds;
}
public void setCycleSeconds(int cycleSeconds) {
this.cycleSeconds = cycleSeconds;
}
public TimedQueue(){
resetLastAccess();
}
private void resetLastAccess(){
lastAccess = System.currentTimeMillis();
}
public boolean add(Message e) {
resetLastAccess();
queue.add(e);
return true;
}
public Message element() {
resetLastAccess();
return queue.element();
}
public boolean offer(Message e) {
resetLastAccess();
queue.offer(e);
return true;
}
public Message peek() {
resetLastAccess();
return queue.peek();
}
public Message poll() {
resetLastAccess();
return queue.poll();
}
public Message remove() {
resetLastAccess();
return queue.remove();
}
public boolean addAll(Collection<? extends Message> c) {
resetLastAccess();
queue.addAll(c);
return true;
}
public void clear() {
resetLastAccess();
queue.clear();
}
public boolean contains(Object o) {
resetLastAccess();
return queue.contains(o);
}
public boolean containsAll(Collection<?> c) {
resetLastAccess();
return queue.containsAll(c);
}
public boolean isEmpty() {
resetLastAccess();
return queue.isEmpty();
}
public Iterator<Message> iterator() {
// TODO Auto-generated method stub
return null;
}
public boolean remove(Object o) {
// TODO Auto-generated method stub
return false;
}
public boolean removeAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
}
public boolean retainAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
}
public int size() {
// TODO Auto-generated method stub
return 0;
}
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
public <T> T[] toArray(T[] a) {
// TODO Auto-generated method stub
return null;
}
public static void main(String[] args) throws InterruptedException{
TimedQueue timedQueue = new TimedQueue();
timedQueue.setCycleSeconds(2);
Message message = new Message();
timedQueue.add(message);
Thread.sleep(2000);
System.out.println(timedQueue.isOutOfDate());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -