<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 ) );
            }
        }
    }
    主站蜘蛛池模板: 美女内射毛片在线看免费人动物 | 无人影院手机版在线观看免费| 日韩精品无码专区免费播放| 亚洲视频免费观看| 久久精品国产亚洲av四虎| 亚洲激情视频网站| 亚洲无码一区二区三区| 美女黄频免费网站| 久久er国产精品免费观看8| 免费av一区二区三区| 天天看片天天爽_免费播放| 免费一级毛片女人图片| 亚洲精品高清久久| 亚洲Av永久无码精品黑人| 你懂得的在线观看免费视频| 毛片免费视频在线观看| 日本免费高清一本视频| 亚洲日韩精品一区二区三区无码| 亚洲人妖女同在线播放| 中文字幕不卡免费视频| 国产成人涩涩涩视频在线观看免费 | 久久久免费的精品| 日韩亚洲国产二区| 97亚洲熟妇自偷自拍另类图片 | 亚洲精品无码久久久久秋霞| 免费无遮挡无码永久视频| 亚洲第一精品电影网| 美女被免费喷白浆视频| 亚洲大尺度无码无码专区| 爱情岛论坛免费视频| 国产亚洲精品免费视频播放| 亚洲AV一二三区成人影片| 久久免费国产精品一区二区| 久久久久亚洲精品日久生情| 午夜免费福利网站| 亚洲国产午夜精品理论片| 破了亲妺妺的处免费视频国产| h视频在线观看免费| 亚洲第一页综合图片自拍| 亚洲综合国产成人丁香五月激情| 午夜国产大片免费观看|