当前位置: 首页> 娱乐> 影视 > 微商加人神器_深圳工程建设公司_游戏优化大师有用吗_百度客服中心人工电话

微商加人神器_深圳工程建设公司_游戏优化大师有用吗_百度客服中心人工电话

时间:2025/7/13 9:25:41来源:https://blog.csdn.net/2301_81937222/article/details/143606317 浏览次数:0次
微商加人神器_深圳工程建设公司_游戏优化大师有用吗_百度客服中心人工电话

首先我们需要知道,在执行构造方法之前会优先执行代码块

 

1.确保 Connect 接口的定义

首先,确保有一个 Connect 接口,并且这个接口扩展了 java.sql.Connection 接口。

import java.sql.*;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.Executor;public class Connect implements Connection{
//实现java.sql.Connection接口
}

 

2. 获取数据库连接

在 creatConnection 方法中通过 DriverManager 获取数据库连接,并将其存储在 connection 成员变量中。确保数据库 URL、用户名和密码是正确的。

3. 提供获取连接的方法

用getConnection 方法检查 connection 是否为 null,如果是,则调用 creatConnection 方法创建连接。

4. 管理连接的使用状态

你通过 isUse 变量来跟踪连接是否正在被使用。isUsed 方法用于检查并标记连接的使用状态。free 方法用于释放连接,将其标记为未使用。

MyConnection类


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;// 继承自自定义的Connect接口,该接口实现了java.sql.Connection接口
public class MyConnection extends Connect {// 数据库连接信息String url = "jdbc:mysql:///test3?useSSL=false";String userName = "root";String password = "xxx";// 实际的数据库连接对象Connection connection = null;// 标记连接是否正在使用private boolean isUse = false;// 创建数据库连接public void creatConnection() {try {// 加载MySQL驱动Class.forName("com.mysql.jdbc.Driver");// 获取数据库连接connection = DriverManager.getConnection(url, userName, password);} catch (Exception e) {e.printStackTrace();}}// 获取数据库连接public Connection getConnection() {// 如果连接未创建,则创建连接if (connection == null) {creatConnection();}return connection;}// 检查连接是否正在使用public boolean isUsed() {// 如果当前未使用,则标记为已使用,并返回false表示获取成功if (!isUse) {isUse = true;return false;} else {// 如果已在使用,则返回true表示获取失败return isUse;}}// 释放连接public boolean free() {// 标记为未使用isUse = false;return true;}}

 

5. 静态实例

将构造方法设为私有(private),实现单例模式,防止外部类通过 new 关键字来创建 Pools 类的实例。定义一个静态的 Pools 类型变量 pools,并在类加载时通过静态代码块或直接在声明时初始化它。这样,无论何时调用 getInstance() 方法,都会返回同一个 Pools 实例。

6. 连接池

定义一个 List<MyConnection> 类型的变量 list 来存储连接池中的连接。这个列表将在类加载时被初始化,并填充一定数量的 MyConnection 对象。

7. 静态代码块初始化连接池

在静态代码块中,循环创建 5 个 MyConnection 对象,并将它们添加到 list 中。

8. 获取连接池实例的方法

你提供了 getInstance() 方法来返回连接池的静态实例。这个方法确保了整个应用中只有一个 Pools 实例被创建和访问。

9. 测试连接池大小

在 main 方法中,通过调用 getInstance() 方法获取了连接池的实例,并打印连接池的大小。这是一个简单的测试,用于验证连接池是否被正确初始化。

 

Pools 类


import java.util.ArrayList;
import java.util.List;// 单例模式的连接池管理类
public class Pools {// 私有构造方法,防止外部实例化private Pools() {}// 静态实例,实现单例模式private static Pools pools = new Pools();// 连接池,存储MyConnection对象List<MyConnection> list = new ArrayList<>();// 静态代码块,初始化连接池{// 在连接池中预先创建5个数据库连接for (int i = 0; i < 5; i++) {MyConnection myConnection = new MyConnection();list.add(myConnection);}}// 获取连接池实例public static Pools getInstance() {return pools;}}

 

10. 获取连接池实例

首先,通过调用 Pools.getInstance() 方法获取了连接池的实例,并获取连接池中的连接列表。

11. 模拟数据库操作请求

使用一个 for 循环来模拟 10 次数据库操作请求。

12. 遍历连接池获取连接

在每次请求中,遍历连接池列表,查找一个未使用的连接(!conn.isUsed())。如果找到了,就跳出循环并使用这个连接。

13. 处理无可用连接的情况

如果没有找到可用的连接,模拟了等待一段时间(使用 Thread.sleep(10)

14. 执行数据库操作

使用获取到的连接,创建了一个 Statement 对象,并执行了一个简单的 SQL 插入操作。这里需要注意的是,应该确保 MyConnection 类的 getConnection() 方法返回的是一个有效的 java.sql.Connection 对象。

15. 释放连接

在操作完成后,调用了 myConnection.free() 方法来释放连接,以便其他请求可以使用它。

Test类

package d117;import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;// 测试类,模拟多个并发请求获取和释放数据库连接
public class Test {public static void main(String[] args) {// 获取连接池实例Pools pools = Pools.getInstance();List<MyConnection> list = pools.list;// 模拟10次数据库操作请求for (int i = 1; i <= 10; i++) {MyConnection myConnection = null;// 遍历连接池,获取一个可用的连接for (MyConnection conn : list) {if (!conn.isUsed()) {myConnection = conn;break;}}// 如果没有找到可用的连接,则等待一段时间重试(模拟等待连接释放)if (myConnection == null) {try {Thread.sleep(10);i--; // 重试当前请求} catch (InterruptedException e) {e.printStackTrace();}continue;}// 使用获取到的连接执行数据库操作try (Connection connection = myConnection.getConnection();Statement statement = connection.createStatement()) {String sql = "INSERT INTO t1 VALUES (4, 4, 20)";int effectRows = statement.executeUpdate(sql);if (effectRows > 0) {System.out.println("插入成功");} else {System.out.println("插入失败");}// 释放连接myConnection.free();} catch (SQLException e) {e.printStackTrace();}}}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

关键字:微商加人神器_深圳工程建设公司_游戏优化大师有用吗_百度客服中心人工电话

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: