📄 eventqueue.java
字号:
/*
* Created on 2005-4-20
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.swing.server.common;
import java.util.LinkedList;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/**
* @author vampire_a
*
* 一个阻塞队列
*/
public class EventQueue {
private Logger log;
private LinkedList events;
private int count = 0;
/**
* Constructor. Initializes the logger and event list
*/
public EventQueue(String name) {
log = Logger.getLogger("EventQueue: " + name);
PropertyConfigurator.configure(Globals.LOG4J_FILE);
events = new LinkedList();
}
/**
* add an event to the queue
*/
public synchronized void enQueue(GameEvent event) {
// log.debug("enQueue " + event.hashCode());
events.addLast(event);
notifyAll();
}
/**
* blocks until an event is available and then removes and returns the first
* available event
*/
public synchronized GameEvent deQueue() throws InterruptedException {
while (events.size() == 0) {
count++;
// log.debug("waiting, count: " + count);
wait();
count--;
}
GameEvent e = (GameEvent) events.removeFirst();
// log.debug("deQueue " + e.hashCode());
return e;
}
/**
* get the current # of events in the queue
*/
public synchronized int size() {
return events.size();
}
}// EventQueue
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -