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

misschuer

常用鏈接

統(tǒng)計(jì)

積分與排名

百事通

最新評(píng)論

對(duì)象池(套用了網(wǎng)上的一個(gè)有BUG代碼 自己補(bǔ)充的 沒(méi)實(shí)際用過(guò))

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;// 對(duì)象     
        boolean busy = false// 此對(duì)象是否正在使用的標(biāo)志,默認(rèn)沒(méi)有正在使用     

        
// 構(gòu)造函數(shù),根據(jù)一個(gè) Object 構(gòu)告一個(gè) PooledObject 對(duì)象     
        public PooledObject(int index, Object objection) {     

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

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

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

        }     

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

        // 設(shè)置對(duì)象的對(duì)象正在忙     
        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 此最相思 閱讀(204) 評(píng)論(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>
            亚洲女优在线| 久久久精品欧美丰满| 夜夜精品视频一区二区| 一区二区在线看| 久久精品论坛| 亚洲国产欧美另类丝袜| 亚洲国产日韩欧美综合久久| 欧美成人xxx| 亚洲天堂av综合网| 久久免费黄色| 99在线热播精品免费99热| 国产精品www994| 香蕉成人啪国产精品视频综合网| 久久久五月天| 夜夜精品视频| 国产欧美日韩伦理| 久久综合伊人77777蜜臀| 亚洲日本va午夜在线影院| 午夜精品福利一区二区蜜股av| 国产亚洲制服色| 欧美国产日韩一区二区在线观看| 日韩午夜视频在线观看| 久久精品中文字幕一区二区三区| 亚洲福利视频一区二区| 亚洲先锋成人| 蜜桃久久精品乱码一区二区| 亚洲国产精品123| 久久不射中文字幕| 亚洲国产精品va在线看黑人动漫| 欧美日产一区二区三区在线观看| 亚洲天堂av在线免费| 免费观看久久久4p| 欧美亚洲一区二区在线观看| 亚洲一区二区视频| 久久久综合网| 亚洲一区二区三区在线播放| 免费观看亚洲视频大全| 欧美在线视频二区| 久久不射网站| 国产精品视频yy9299一区| 欧美大片在线观看| 久久精品国产第一区二区三区| 日韩一级免费观看| 亚洲黄色一区| 久久嫩草精品久久久久| 亚洲欧美另类久久久精品2019| 亚洲国产精品第一区二区三区| 国产日韩欧美中文在线播放| 国产精品a级| 欧美国产视频一区二区| 久久一区二区三区四区| 久久久久国产精品人| 午夜视频精品| 欧美一级片久久久久久久| 亚洲在线成人| 亚洲午夜性刺激影院| 夜夜嗨av一区二区三区四区| 亚洲激情在线| 亚洲激情视频| 亚洲国产精品尤物yw在线观看 | 亚洲日韩视频| 亚洲人线精品午夜| 日韩网站在线观看| 日韩午夜剧场| 亚洲无玛一区| 午夜精品在线看| 性欧美1819性猛交| 久久成人精品无人区| 久久精品伊人| 你懂的一区二区| 欧美精品尤物在线| 欧美日韩亚洲一区二区| 国产精品海角社区在线观看| 国产精品成人一区二区三区夜夜夜 | 欧美激情成人在线| 欧美日韩在线播放| 国产精品免费一区二区三区观看| 欧美午夜视频| 韩国精品主播一区二区在线观看| 欧美本精品男人aⅴ天堂| 美国十次成人| 欧美亚洲成人精品| 久久久久国内| 久久se精品一区精品二区| 久久精品一区蜜桃臀影院| 美女亚洲精品| 日韩午夜电影在线观看| 亚洲一区二区欧美日韩| 欧美亚洲在线观看| 欧美激情aⅴ一区二区三区| 国产精品女人网站| 亚洲高清一区二区三区| 一区二区三区四区在线| 久久久久久久久蜜桃| 亚洲电影欧美电影有声小说| 中文国产成人精品久久一| 久久久精品动漫| 亚洲综合三区| 欧美日韩黄色一区二区| 亚洲在线播放| 免费成人在线观看视频| 国产精品推荐精品| 亚洲黄色片网站| 久久久7777| 亚洲免费激情| 久久免费精品日本久久中文字幕| 欧美视频官网| 日韩视频久久| 欧美高清视频免费观看| 欧美亚洲视频一区二区| 欧美日韩综合另类| 亚洲高清不卡在线| 欧美专区在线观看| 亚洲婷婷综合色高清在线| 欧美激情亚洲自拍| 亚洲国产天堂网精品网站| 久久久精品国产99久久精品芒果| 日韩午夜av在线| 欧美国产日韩精品| 亚洲激情电影在线| 免费成人你懂的| 久久国产主播| 国内外成人免费激情在线视频| 亚洲一区欧美二区| 99在线热播精品免费| 欧美精品激情blacked18| 亚洲国产精品电影在线观看| 久久久综合视频| 亚洲欧美色一区| 国产午夜精品在线| 久久久www成人免费精品| 西西人体一区二区| 国产手机视频一区二区| 久久久久久亚洲精品中文字幕 | 久久视频在线视频| 久久精品视频免费播放| 国产婷婷精品| 久久久www| 久久国产日韩| 亚洲国产毛片完整版| 亚洲国产乱码最新视频| 欧美多人爱爱视频网站| 亚洲精品一区二| 亚洲国产精品久久久久婷婷884| 欧美国产第一页| 国产精品99久久久久久久久| 一本色道久久99精品综合| 国产精品看片你懂得| 小嫩嫩精品导航| 欧美诱惑福利视频| 在线观看欧美亚洲| 亚洲精品在线观看视频| 欧美深夜福利| 久久人人97超碰人人澡爱香蕉| 久久久.com| 夜夜嗨一区二区三区| 亚洲一区二区三区高清| 国产视频欧美| 欧美成人伊人久久综合网| 欧美片第1页综合| 亚洲欧美日韩精品久久奇米色影视| 亚洲影院污污.| 136国产福利精品导航网址应用| 亚洲欧洲视频在线| 国产日产欧美一区| 91久久精品国产91久久| 国产日产亚洲精品系列| 亚洲第一综合天堂另类专| 欧美三级在线视频| 免费高清在线视频一区·| 欧美日韩午夜视频在线观看| 久久精品一区二区国产| 欧美日韩国产综合视频在线观看 | 免费看精品久久片| 欧美日韩国产亚洲一区| 久久青青草原一区二区| 欧美日本高清一区| 浪潮色综合久久天堂| 国产精品久久97| 亚洲欧洲精品天堂一级| 国内精品久久国产| 亚洲少妇自拍| 99ri日韩精品视频| 米奇777在线欧美播放| 久久黄色小说| 国产精品99一区| 亚洲人午夜精品免费| 亚洲国产成人不卡| 欧美一区二区成人6969| 亚洲中无吗在线| 欧美日韩aaaaa| 亚洲人成网站影音先锋播放| 在线精品亚洲| 欧美在线视频一区二区| 欧美亚洲在线观看| 国产欧美日韩在线| 亚洲欧美高清| 欧美日韩精品免费在线观看视频| 欧美日韩福利视频| 亚洲国产精品一区二区第一页|