<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 9, comments - 4, trackbacks - 0, articles - 21

    JDK5 線程池2

    Posted on 2008-01-18 15:18 一步一步努力向上爬 閱讀(295) 評論(0)  編輯  收藏 所屬分類: J2SE學習
     昨天開始研究java的多線程包java.util.concurrent,根據自己的理解實現了一個消息隊列異步調用(200行代碼左右)。拿出來與大家分享我的勞動成果。
      希望大家多提意見。指出哪里寫的不好,以后加以改正。

    ThreadPoolManager類:負責管理線程池,調用輪詢的線程來訪問字符串緩沖區的內容,維護緩沖區,當線程池溢出時拋出的Runnable任務被加入到字符緩沖區。
    public class ThreadPoolManager
    {
        private static ThreadPoolManager tpm = new ThreadPoolManager();

        // 線程池維護線程的最少數量
        private final static int CORE_POOL_SIZE = 4;

        // 線程池維護線程的最大數量
        private final static int MAX_POOL_SIZE = 10;

        // 線程池維護線程所允許的空閑時間
        private final static int KEEP_ALIVE_TIME = 0;

        // 線程池所使用的緩沖隊列大小
        private final static int WORK_QUEUE_SIZE = 10;

        // 消息緩沖隊列
        Queue<String> msgQueue = new LinkedList<String>();

        // 訪問消息緩存的調度線程
        final Runnable accessBufferThread = new Runnable()
        {
            public void run()
            {
                // 查看是否有待定請求,如果有,則創建一個新的AccessDBThread,并添加到線程池中
                if( hasMoreAcquire() )
                {
                    String msg = ( String ) msgQueue.poll();
                    Runnable task = new AccessDBThread( msg );
                    threadPool.execute( task );
                }
            }
        };

        final RejectedExecutionHandler handler = new RejectedExecutionHandler()
        {
            public void rejectedExecution( Runnable r, ThreadPoolExecutor executor )
            {
                System.out.println(((AccessDBThread )r).getMsg()+"消息放入隊列中重新等待執行");
                msgQueue.offer((( AccessDBThread ) r ).getMsg() );
            }
        };

        // 管理數據庫訪問的線程池
        final ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
                CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS,
                new ArrayBlockingQueue( WORK_QUEUE_SIZE ), this.handler );

        // 調度線程池
        final ScheduledExecutorService scheduler = Executors
                .newScheduledThreadPool( 1 );

        final ScheduledFuture taskHandler = scheduler.scheduleAtFixedRate(
                accessBufferThread, 0, 1, TimeUnit.SECONDS );

        public static ThreadPoolManager newInstance()
        {
            return tpm;
        }

        private ThreadPoolManager(){}

        private boolean hasMoreAcquire()
        {
            return !msgQueue.isEmpty();
        }

        public void addLogMsg( String msg )
        {
            Runnable task = new AccessDBThread( msg );
            threadPool.execute( task );
        }
    }

    public class AccessDBThread implements Runnable
    {
        private String msg;
        
        public String getMsg()
        {
            return msg;
        }

        public void setMsg( String msg )
        {
            this.msg = msg;
        }
        
        public AccessDBThread(){
            super();
        }
        
        public AccessDBThread(String msg){
            this.msg = msg;
        }

        public void run()
        {
            // 向數據庫中添加Msg變量值
            System.out.println("Added the message: "+msg+" into the Database");
        }

    }

    public class TestDriver
    {
        ThreadPoolManager tpm = ThreadPoolManager.newInstance();

        public void sendMsg( String msg )
        {
            tpm.addLogMsg( msg + "記錄一條日志 " );
        }

        public static void main( String[] args )
        {
            for( int i = 0; i < 100; i++ )
            {
                new TestDriver().sendMsg( Integer.toString( i ) );
            }
        }
    }
    主站蜘蛛池模板: 国产公开免费人成视频| 最近的中文字幕大全免费8 | 亚洲人成人网站18禁| 免费成人激情视频| 亚洲国产人成网站在线电影动漫| 99热在线日韩精品免费| 亚洲av无码专区国产乱码在线观看 | 亚洲色婷婷六月亚洲婷婷6月| 人妻18毛片a级毛片免费看| 亚洲国产成人爱av在线播放| 一级做a爰片性色毛片免费网站| 全亚洲最新黄色特级网站| 四虎国产精品成人免费久久| 久久99亚洲综合精品首页| 中文无码日韩欧免费视频| 亚洲不卡中文字幕无码| 2015日韩永久免费视频播放 | 亚洲激情在线观看| 67pao强力打造高清免费| 亚洲一区二区三区免费视频| 妞干网免费观看视频| 深夜A级毛片视频免费| 亚洲熟妇av一区二区三区 | 亚洲免费一级视频| 99亚偷拍自图区亚洲| 国产一区二区免费在线| 黄色视屏在线免费播放| 亚洲最新视频在线观看| 成年女人18级毛片毛片免费观看| 亚洲.国产.欧美一区二区三区| 亚洲色偷偷综合亚洲AV伊人| 一区二区免费视频| 亚洲精品国产首次亮相| 日日噜噜噜噜夜夜爽亚洲精品 | 日本免费精品一区二区三区| 亚洲中文字幕无码久久综合网| 99在线免费观看视频| 亚洲av色香蕉一区二区三区蜜桃| 亚洲精品无码午夜福利中文字幕 | 精品久久久久久亚洲| h视频在线免费看|