|  |  | 
 |  |  | import org.apache.logging.log4j.Logger; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 队列,先进先出,非线程安全 | 
 |  |  |  * 队列,先进先出 | 
 |  |  |  */ | 
 |  |  | public class Queue { | 
 |  |  |    @SuppressWarnings("unfinal") | 
 |  |  | 
 |  |  |     */ | 
 |  |  |    @SuppressWarnings("unused") | 
 |  |  |    public void pushHead(NodeObj obj)throws Exception{ | 
 |  |  |       //两个线程环境,需要同步锁 | 
 |  |  |       synchronized(synObj){ | 
 |  |  |          if(obj == null){ | 
 |  |  |             return ; | 
 |  |  | 
 |  |  |     * @param obj 入列的对象 | 
 |  |  |     */ | 
 |  |  |    public void pushTail(NodeObj obj)throws Exception{ | 
 |  |  |       //两个线程环境,需要同步锁 | 
 |  |  |       synchronized(synObj){ | 
 |  |  |          if(obj == null){ | 
 |  |  |             return ; | 
 |  |  | 
 |  |  |     * @return 出列对象 | 
 |  |  |     */ | 
 |  |  |    public NodeObj pop(){ | 
 |  |  |       //两个线程环境,需要同步锁 | 
 |  |  |       synchronized(synObj){ | 
 |  |  |          NodeObj obj = null ; | 
 |  |  |          if(this.size > 0){ | 
 |  |  | 
 |  |  |     */ | 
 |  |  |    @SuppressWarnings("unused") | 
 |  |  |    public Node getFirstNode(){ | 
 |  |  |       //两个线程环境,需要同步锁 | 
 |  |  |       synchronized(synObj) { | 
 |  |  |          Node node = this.head.next; | 
 |  |  |          if (node != this.tail) { | 
 |  |  |             return node; | 
 |  |  |          } | 
 |  |  |          return null; | 
 |  |  |       Node node = this.head.next ; | 
 |  |  |       if(node != this.tail){ | 
 |  |  |          return node ; | 
 |  |  |       } | 
 |  |  |       return null ; | 
 |  |  |    } | 
 |  |  |    /** | 
 |  |  |     * 得到最后一个节点,但不把节点从队列中清除 | 
 |  |  | 
 |  |  |     */ | 
 |  |  |    @SuppressWarnings("unused") | 
 |  |  |    public Node getLastNode(){ | 
 |  |  |       //两个线程环境,需要同步锁 | 
 |  |  |       synchronized(synObj) { | 
 |  |  |          Node node = this.tail.pre; | 
 |  |  |          if (node != this.head) { | 
 |  |  |             return node; | 
 |  |  |          } | 
 |  |  |          return null; | 
 |  |  |       Node node = this.tail.pre ; | 
 |  |  |       if(node != this.head){ | 
 |  |  |          return node ; | 
 |  |  |       } | 
 |  |  |       return null ; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    /** |