设计一个类似于数据库连接池的对象管理器-ConnectionManager,负责创建并管理Connection对象(每个对象产生时带有唯一的对象ID号,从1开始编号),客户端程序不能通过new关键字来创建Connection对象,只能通过ConnectionManager的静态方法来获取Connection对象,ConnectionManager中管理的Connnection对象总数不超过10个。
当客户端请求到ConnectionManager中的空闲Connnection对象时,提示“已成功申请到连接对象+对象ID”,否则提示“目前没有空闲连接对象,请稍后再试!”.

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

//写个对象管理器限制创建的对象的数量
class Connection{

    private final String id = UUID.randomUUID().toString();    //创建对象则自动生成一个Id

    private Connection(){
    }

    public static Connection getCon(){

        return new Connection();
    }

    public String getId() {
        return id;
    }
}

public class ConnectionManager {

    private static List<Connection> connectionList = new ArrayList<>();

    public Connection getConnection() {

        if (connectionList.size() < 10) {

            Connection con = Connection.getCon();
            System.out.println("已成功申请到连接对象" + con.getId());
            connectionList.add(con);
            return con;
        }else{

            System.out.println("目前没有空闲连接对象,请稍后再试");
        }

        return null;
    }

    public boolean releaseConnection(Connection con){

        if (connectionList.contains(con)){

            connectionList.remove(con);
            return true;
        }else{

            return false;
        }
    }

    public static void main(String[] args) {

        ConnectionManager manager = new ConnectionManager();
        List<Connection> connectionList = new ArrayList<>();
        for (int i = 0;i < 15;++i){

            Connection con = manager.getConnection();
            if (con != null) connectionList.add(con);
        }

        for (int i = 0;i < 3;++i){

            Connection con = connectionList.get(i);
            boolean flag = manager.releaseConnection(con);
            if (flag){

                System.out.println("回收对象成功");
            }else{

                System.out.println("回收对象失败");
            }
        }

        for (int i = 0;i < 15;++i){

            Connection con = manager.getConnection();
            if (con != null) connectionList.add(con);
        }

    }
}


 

更多推荐