订阅所有JSP/Servlet的日志 订阅 | 这是最新一篇日志 上一篇 | 下一篇日志 下一篇 ]
JAVA技术

BufferPool

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.nio.ByteBuffer;
 
public class BufferPool
{
 
    private RmmBuffer pool[];
    private int buffSize;
    private int fullSize;
    private int currSize;
    private int idleSize;
 
    public BufferPool(int numOfBuffers, int bufferLength)
    {
        buffSize = bufferLength;
        fullSize = numOfBuffers;
        pool = new RmmBuffer[fullSize];
        currSize = 0;
        idleSize = 0;
    }
 
    public synchronized RmmBuffer getBuffer()
        throws Error
    {
        if(idleSize > 0)
            return pool[--idleSize];
        if(currSize < fullSize)
        {
            RmmBuffer rb = new RmmBuffer(buffSize);
            currSize++;
            return rb;
        } else
        {
            return null;
        }
    }
 
    public synchronized void returnBuffer(RmmBuffer buffer)
    {
        _returnBuffer(buffer);
    }
 
    public void _returnBuffer(RmmBuffer buffer)
    {
        if(buffer == null)
        {
            return;
        } else
        {
            buffer.bb.clear();
            pool[idleSize++] = buffer;
            return;
        }
    }
 
    public int size()
    {
        return idleSize;
    }
 
    public int fullSize()
    {
        return fullSize;
    }
 
    public int getUtilization()
    {
        return (100 * (currSize - idleSize)) / fullSize;
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.nio.ByteBuffer;
 
public class RmmBuffer
{
 
    public byte dataBuffer[];
    public int dataLength;
    public ByteBuffer bb;
 
    public RmmBuffer(int size)
    {
        dataBuffer = new byte[size];
        bb = ByteBuffer.wrap(dataBuffer);
    }
 
    public RmmBuffer(byte ba[])
    {
        dataBuffer = ba;
        dataLength = ba.length;
        bb = ByteBuffer.wrap(dataBuffer, 0, dataLength);
    }
}


平均得分
(0 次评分)





文章来自: 本站原创
标签: buffer pool 
评论: 0 | 查看次数: 1361
发表评论
昵 称:  登录
内 容:
选 项:
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启