青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

misschuer

常用鏈接

統計

積分與排名

百事通

最新評論

對象池(套用了網上的一個有BUG代碼 自己補充的 沒實際用過)

import java.util.Enumeration;
import java.util.Vector;

public class ObjectPool {

    private static final boolean PRINTABLE = true;
    private Class<?> clazz = null;
    private int numObjects = 10;
    private int maxObjects = 50;
    private Vector<PooledObject> objects = null;
    
    public static void main(String[] args) throws Exception {

        ObjectPool pool = new ObjectPool(XX.class);
        pool.createPool();
        
        XX xx = (XX) pool.getObject();
        xx.reset();
        xx.setAge(1);
        xx.setSex("M");
        
        pool.returnObject(xx);
        pool.closeObjectPool();
    }
    
    
    public ObjectPool(Class<?> clazz) {
        
        this.clazz = clazz;
    }
    
    public synchronized void createPool() throws Exception {
        
        if (this.objects != null)
            return;
        
        this.objects = new Vector<PooledObject>();
        for (int i = 0; i < this.numObjects; ++ i) {
            
            createObjects();
        }
    }
    
    
    public synchronized Object getObject() throws Exception {
        
        if (this.objects == null)
            return null;
        
        Object conn = this.getFreeObject();
        
        while (conn == null) {
            wait(250);
            conn = this.getFreeObject();
        }
        
        return conn;
    }
    
    
    private Object getFreeObject() throws Exception {
        
        Object obj = this.findFreeObject();
        
        if (obj == null) {
            
            this.createObjects();
            obj = this.findFreeObject();
            if (obj == null) {
                
                return null;
            }
        }
        
        return obj;
    }
    
    private void createObjects() throws Exception {
        
        if (this.objects.size() < this.maxObjects) {
            
            this.message("created" + this.objects.size());
            Object obj = this.clazz.newInstance();
            this.objects.addElement(new PooledObject(this.objects.size(), obj));
        }
    }
    
    
    private Object findFreeObject() {
        
        this.message("before free:--------");
        this.print();
        Object obj = null;
        PooledObject pooledObject = null;
        Enumeration<PooledObject> enumerate = objects.elements();
        while (enumerate.hasMoreElements()) {
            
            pooledObject = (PooledObject) enumerate.nextElement();
            if (!pooledObject.isBusy()) {
                
                pooledObject.setBusy(true);
                obj = pooledObject.getObject();
                this.message("free object");
                break;
            }
        }
        
        this.message("after free:--------");
        this.print();
        
        return obj;
    }
    
    
    public void returnObject(Object obj) {
        
        if (this.objects == null)
            return;
        
        this.message("before return:--------");
        this.print();
        PooledObject pooledObject = null;
        Enumeration<PooledObject> enumerate = objects.elements();
        while (enumerate.hasMoreElements()) {
            
            pooledObject = (PooledObject) enumerate.nextElement();
            if (obj == pooledObject.getObject()) {
                
                pooledObject.setBusy(false);
                this.message("return object");
                break;
            }
        }
        this.message("after return:--------");
        this.print();
    }
    
    
    public synchronized void closeObjectPool() {
        
        if (this.objects == null)
            return;
        
        PooledObject pooledObject = null;
        Enumeration<PooledObject> enumerate = objects.elements();
        while (enumerate.hasMoreElements()) {
            
            pooledObject = (PooledObject) enumerate.nextElement();
            this.message(pooledObject.toString());
            if (pooledObject.isBusy()) {
                this.message("wait 5000");
                wait(5000);
            }
        }

        this.objects.clear();
        this.objects = null;
    }
    
    
    private void wait(int millionSeconds) {
        
        try {
            Thread.sleep(millionSeconds);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
    
    public void print() {
        
        Enumeration<PooledObject> enumerate = objects.elements();
        while (enumerate.hasMoreElements()) {
            
            PooledObject pooledObject = (PooledObject) enumerate.nextElement();
            this.message(pooledObject.toString());
        }
        
        this.message("print end==============================");
    }
    
    
    public void message(String msg) {
        
        if (PRINTABLE) {
            System.out.println(msg);
        }
    }
    
    
    class PooledObject {     
        
        private int index = 0;
        Object objection = null;// 對象     
        boolean busy = false// 此對象是否正在使用的標志,默認沒有正在使用     

        
// 構造函數,根據一個 Object 構告一個 PooledObject 對象     
        public PooledObject(int index, Object objection) {     

            this.index = index;
            this.objection = objection;
            this.busy = false;
        }     

        // 返回此對象中的對象     
        public Object getObject() {     
            return objection;     
        }     

        // 設置此對象的,對象     
        public void setObject(Object objection) {     
            this.objection = objection;     

        }     

        // 獲得對象對象是否忙     
        public boolean isBusy() {     
            return busy;     
        }     

        // 設置對象的對象正在忙     
        public void setBusy(boolean busy) {     
            this.busy = busy;     
        }

        public int getIndex() {
            return index;
        }

        public void setIndex(int index) {
            this.index = index;
        }
        
        @Override
        public String toString() {
            
            return String.format("[PooledObject] index:%d, busy:%b", this.index, this.busy);
        }
    } 
}


class XX {
    
    private int age = 0;
    private String sex = "";
    
    public XX() {
        
    }
    
    public void reset() {
        
        this.age = 0;
        this.sex = "";
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

posted on 2015-05-18 18:49 此最相思 閱讀(203) 評論(0)  編輯 收藏 引用 所屬分類: Java

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜羞羞片| 中文欧美字幕免费| 亚洲欧洲视频在线| 亚洲黄网站黄| 亚洲美女视频在线免费观看| 日韩视频久久| 亚洲欧美制服另类日韩| 欧美一区二区性| 久久一二三区| 亚洲精品女人| 亚洲精品国产拍免费91在线| 国产精品99久久久久久有的能看| 亚洲欧美日韩另类精品一区二区三区| 亚洲嫩草精品久久| 久久久综合激的五月天| 欧美激情综合| 国产欧美日韩综合精品二区| 亚洲国产精品一区| 亚洲一区二区免费| 欧美xxx成人| 亚洲在线免费| 欧美成人69av| 国产三级欧美三级| 日韩视频在线观看免费| 久久高清福利视频| 亚洲国产精品久久久久婷婷884| 一区二区三区高清| 免费不卡亚洲欧美| 国产欧美一区二区精品秋霞影院 | 欧美性生交xxxxx久久久| 一区二区三区无毛| 99精品99| 老司机久久99久久精品播放免费 | 亚洲欧洲精品一区二区三区波多野1战4| 亚洲国产精品成人一区二区| 亚洲欧美日韩国产中文在线| 毛片一区二区三区| 中文久久精品| 欧美日本韩国| 91久久中文字幕| 久久精品免费电影| 亚洲午夜一级| 欧美日韩视频免费播放| 91久久精品国产91性色| 久久视频在线免费观看| 亚洲一区三区电影在线观看| 欧美精品自拍偷拍动漫精品| 亚洲第一视频网站| 六月婷婷一区| 久久黄色级2电影| 国产有码一区二区| 欧美一区二区三区视频免费| 中日韩男男gay无套 | 尤物yw午夜国产精品视频明星| 西西人体一区二区| 亚洲一区二区三区免费在线观看 | 久久米奇亚洲| 国产色产综合色产在线视频| 亚洲午夜精品久久| 9l视频自拍蝌蚪9l视频成人| 欧美成人中文字幕| 99精品国产高清一区二区| 亚洲国产欧美日韩另类综合| 浪潮色综合久久天堂| 亚洲高清视频在线观看| 欧美国产亚洲精品久久久8v| 久久午夜精品一区二区| 韩国成人福利片在线播放| 久久手机精品视频| 麻豆免费精品视频| 日韩一级二级三级| 日韩西西人体444www| 国产精品久久久久av免费| 香蕉亚洲视频| 久久激五月天综合精品| 亚洲日韩第九十九页| 亚洲欧洲一区| 国产精品hd| 久久国产精品99国产| 久久久噜噜噜久噜久久 | 亚洲九九精品| 亚洲天堂成人| 国语自产精品视频在线看抢先版结局 | 欧美精品一区二区三区蜜桃 | 亚洲国产一区二区三区在线播 | 久久久久久久久岛国免费| 加勒比av一区二区| 亚洲大片av| 欧美午夜激情视频| 久久激情久久| 欧美老女人xx| 久久久人人人| 欧美连裤袜在线视频| 久久福利资源站| 欧美第十八页| 久久精品国产一区二区三| 久久综合九色九九| 欧美一级片一区| 美女国产一区| 久久成人18免费观看| 免费成人你懂的| 久久久久看片| 国产精品v欧美精品∨日韩| 久久在线视频在线| 欧美性色aⅴ视频一区日韩精品| 久热这里只精品99re8久| 欧美视频免费在线| 欧美黄色小视频| 国产视频在线观看一区二区三区 | 欧美黑人在线播放| 国产精品稀缺呦系列在线| 亚洲国产精品一区二区www| 国产亚洲成av人在线观看导航| 欧美成人精品福利| 国产老肥熟一区二区三区| 日韩视频免费观看高清在线视频 | 在线看视频不卡| 亚洲欧美国产三级| 999亚洲国产精| 开元免费观看欧美电视剧网站| 午夜精品区一区二区三| 欧美日韩国内自拍| 亚洲电影免费观看高清完整版在线观看 | 亚洲免费成人av电影| 欧美在线观看日本一区| 亚洲一本视频| 欧美日韩1080p| 亚洲国产视频一区二区| 亚洲国产99精品国自产| 欧美揉bbbbb揉bbbbb| 国产精品日韩欧美综合| 午夜视频在线观看一区二区| 欧美精品手机在线| 麻豆成人综合网| 国语自产精品视频在线看| 亚洲男人影院| 欧美在线观看视频| 国产麻豆精品视频| 亚洲综合激情| 久久久久综合网| 亚洲第一福利在线观看| 另类综合日韩欧美亚洲| 欧美成人性网| 亚洲美女精品一区| 欧美精品在线观看| 一本一本久久a久久精品综合妖精| 日韩一级免费观看| 国产精品第一区| 欧美一区午夜精品| 久久久久久有精品国产| 国产一区二区成人| 久久免费国产精品| 亚洲人成网站777色婷婷| 99国产精品99久久久久久| 欧美日本亚洲| 亚洲欧美成人综合| 久久香蕉精品| 亚洲美女av黄| 国产日韩精品一区二区三区 | 久久婷婷久久一区二区三区| 一区二区亚洲| 欧美日韩国产精品成人| 亚洲欧美清纯在线制服| 男女精品视频| 亚洲一区二区三| 黑人巨大精品欧美一区二区| 欧美福利网址| 亚洲综合色婷婷| 欧美激情第三页| 亚洲综合色丁香婷婷六月图片| 国产欧美日韩一区| 欧美成人激情在线| 亚洲视频在线观看三级| 可以看av的网站久久看| 亚洲视频在线看| 怡红院精品视频在线观看极品| 欧美成人综合网站| 午夜视频久久久| 亚洲高清资源综合久久精品| 久久av在线| 99视频超级精品| 极品日韩久久| 国产精品稀缺呦系列在线| 欧美成年人网站| 久久国产一区二区三区| 一区二区欧美激情| 欧美风情在线| 开心色5月久久精品| 午夜久久一区| 一区二区三区欧美在线| 亚洲欧洲精品一区二区三区不卡| 国产日韩欧美不卡| 欧美日韩一区二区三区在线视频| 久久躁日日躁aaaaxxxx| 欧美在线欧美在线| 亚洲欧美国产日韩天堂区| 一区二区三区www| 亚洲精品日韩久久| 亚洲欧洲偷拍精品| 亚洲高清色综合|