⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplepool.java

📁 RMI英文教程,从各个方面教你怎么进行RMI开发
💻 JAVA
字号:
package com.ora.rmibook.chapter12.pool.simple;


import com.ora.rmibook.chapter12.pool.*;


public class SimplePool implements Pool {
    private int _maximumIndex;
    private int _currentPosition;
    private PoolHelper _helper;
    private Object[] _availableObjects;
    public SimplePool(int startingSize, int maximumSize, PoolHelper helper) {
        _maximumIndex = maximumSize - 1;
        _helper = helper;
        buildInitialObjects(startingSize, maximumSize);
    }

    public synchronized Object getObject() {
        if (_currentPosition == -1) {
            return _helper.create();
        }
        return getObjectFromArray();
    }

    private Object getObjectFromArray() {
        Object returnValue = _availableObjects[_currentPosition];

        _availableObjects[_currentPosition] = null;
        _currentPosition--;
        return returnValue;
    }

    public synchronized void returnObject(Object object) {
        if (_currentPosition == _maximumIndex) {
            _helper.dispose(object);
            return;
        }
        if (!_helper.isObjectStillValid(object)) {
            _helper.dispose(object);
            return;
        }
        _currentPosition++;
        _availableObjects[_currentPosition] = object;
    }

    private void buildInitialObjects(int startingSize, int maximumSize) {
        _availableObjects = new Object[maximumSize];
        int counter;

        for (counter = 0; counter < startingSize; counter++) {
            _availableObjects[counter] = _helper.create();
        }
        _currentPosition = startingSize - 1;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -