queuepuller.java

来自「CroftSoft Code Library是一个开源的可移植的纯Java游戏库」· Java 代码 · 共 116 行

JAVA
116
字号
     package com.croftsoft.core.util.queue;

     import com.croftsoft.core.lang.NullArgumentException;     import com.croftsoft.core.lang.lifecycle.Lifecycle;     import com.croftsoft.core.role.Consumer;
     import com.croftsoft.core.util.loop.Loopable;     import com.croftsoft.core.util.loop.Looper;
     /*********************************************************************
     * Pulls objects out of the queue in a separate thread.     *
     * @version
     *   2003-05-27
     * @since
     *   1998-11-23
     * @author
     *   <a href="http://www.croftsoft.com/">David Wallace Croft</a>
     *********************************************************************/

     public final class  QueuePuller       implements Lifecycle     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     {

     private final Queue     queue;     private final Consumer  consumer;     private final Looper    looper;

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public  QueuePuller (       Queue     queue,       Consumer  consumer )
     //////////////////////////////////////////////////////////////////////
     {       NullArgumentException.check ( this.queue    = queue    );       NullArgumentException.check ( this.consumer = consumer );       looper = new Looper (         new Loopable ( )         {           public boolean  loop ( )           {             return QueuePuller.this.loop ( );           }         } );     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     public void  init ( )
     //////////////////////////////////////////////////////////////////////
     {       looper.init ( );
     }

     public void  start ( )
     //////////////////////////////////////////////////////////////////////
     {       looper.start ( );
     }

     public void  stop ( )
     //////////////////////////////////////////////////////////////////////
     {       looper.stop ( );
     }

     public void  destroy ( )
     //////////////////////////////////////////////////////////////////////
     {       looper.destroy ( );
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     public boolean  append ( Object  o )
     //////////////////////////////////////////////////////////////////////
     {
       return queue.append ( o );
     }

     public Object  replace ( Object  o )
     //////////////////////////////////////////////////////////////////////
     {
       return queue.replace ( o );
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////     private boolean  loop ( )     //////////////////////////////////////////////////////////////////////
     {       try       {         consumer.consume ( queue.pull ( ) );       }       catch ( InterruptedException  ex )       {       }       return true;           }
     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?