simplepool.java

来自「RMI英文教程,从各个方面教你怎么进行RMI开发」· Java 代码 · 共 56 行

JAVA
56
字号
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 + =
减小字号Ctrl + -
显示快捷键?