<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 一步一步努力向上爬 閱讀(293) 評論(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永久无码精品网站在线观看| 少妇高潮太爽了在线观看免费| 91亚洲国产成人久久精品网站| 日本免费一区二区三区四区五六区| 亚洲天堂中文资源| 一级毛片不卡片免费观看| 亚洲午夜在线电影| 一级毛片aaaaaa免费看| 亚洲熟妇av一区二区三区下载| 亚洲黄色免费电影| 亚洲第一二三四区| 国产精品视频免费一区二区 | 亚洲精品制服丝袜四区| 国产又黄又爽又大的免费视频 | 久久精品国产亚洲AV无码麻豆| 免费观看美女用震蛋喷水的视频 | 少妇亚洲免费精品| 大妹子影视剧在线观看全集免费| 国产亚洲AV无码AV男人的天堂| 69视频免费在线观看| 久久亚洲精品国产精品婷婷| 亚洲av无码乱码在线观看野外 | 亚洲中文字幕在线无码一区二区| 免费无码又爽又刺激高潮的视频| 一级特黄录像免费播放中文版| 亚洲级αV无码毛片久久精品| 成年黄网站色大免费全看| 亚洲国产精品网站在线播放| 亚洲综合国产精品第一页| 日韩视频免费在线观看| 亚洲国产日韩综合久久精品| 免费人成视频在线观看视频| A片在线免费观看| 亚洲人成在线免费观看| 四只虎免费永久观看| 日韩人妻无码精品久久免费一| 亚洲精品欧美综合四区| 国产V亚洲V天堂无码|