src.com.ibm.as400.access.CADSPool Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: CADSPool.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2001 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.access;
import java.util.LinkedList;
// This class is used to pool ClientAccessDataStream objects.
final class CADSPool
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
private ClientAccessDataStream[] streams_ = new ClientAccessDataStream[4];
// Performance optimization for linkedList of returned data streams.
private LinkedList linkedList_ = null;
private final Object streamsLock_ = new Object(); //@P1A
private int searchStart_ = 0;
public CADSPool() {
try {
linkedList_ = new LinkedList();
} catch (Throwable e) {
// Ignore any errors if the linked list cannot be created
// this will fall back to the older implemenation
}
}
final ClientAccessDataStream getUnusedStream()
{
synchronized(streamsLock_) //@P1C
{
ClientAccessDataStream returnStream = null;
// Use the linked list if available
if (linkedList_ != null) {
while (linkedList_.size() > 0) {
returnStream = (ClientAccessDataStream) linkedList_.removeFirst();
if (returnStream.canUse()) {
return returnStream;
}
}
}
int max = streams_.length;
for (int i= searchStart_; i