⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timedqueue.java

📁 一个以tomcat作为服务器的C/S架构的聊天系统
💻 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 + -