当前位置: 首页 > news >正文

最适合新人的写作网站办公室公共空间设计

最适合新人的写作网站,办公室公共空间设计,自己架设服务器做网站,宝丰网站制作公司在项目中看到有用到数据库的连接池#xff0c;心里就思考着为什么需要数据库连接池#xff0c;只用一个连接会造成什么影响?(只用一个connection)?1 猜想:jdbc的事务是基于connection的#xff0c;如果多线程共用一个connection#xff0c;会造成多线程之间的事务相互干…在项目中看到有用到数据库的连接池心里就思考着为什么需要数据库连接池只用一个连接会造成什么影响?(只用一个connection)?1  猜想:jdbc的事务是基于connection的如果多线程共用一个connection会造成多线程之间的事务相互干扰。(connection.setAutoCommit(false);//connection.commit())2  于是就模仿以下场景来做一个测试:在多用户请求的情况下只用一个数据库connection。1)获取connection工具类:package jdbcPool.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnectorUtil {public static final String userroot;public static final String pwd123456;public static final String drivercom.mysql.jdbc.Driver;public static final String url jdbc:mysql://localhost:3306/test;private static Connection conn;private static int connectCount0;static {try {Class.forName(driver);} catch (ClassNotFoundException e) {System.out.println(找不到数据库驱动..);e.printStackTrace();}}/*** 获取数据库连接实例* return*/public synchronized static Connection getInstance(){if(connnull){try {connDriverManager.getConnection(url,user, pwd);conn.setAutoCommit(false);//设置为不自动提交。。。connectCount;System.out.println(连接数据库次数:connectCount);} catch (SQLException e) {System.out.println(连接数据库失败....);e.printStackTrace();}}return conn;}}2) 业务接口实现类:package jdbcPool.business;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import jdbcPool.util.ConnectorUtil;public class StudentService {private Connection conn;private static StudentService studentService;private StudentService(){connConnectorUtil.getInstance();}public static synchronized  StudentService getInstance(){if(studentServicenull){studentServicenew StudentService();}return studentService;}public void insert(String id,String name,String no) throws Exception {String addStr insert into student(id,name,no) values(id,name,no);Statement statementnull;try {statement conn.createStatement();statement.execute(addStr);if(1350.equals(id)){//模仿某个线程执行service某个方法中某个步骤出现异常Thread.sleep(3000);//模仿当前线程执行时间较长。。。。。System.out.println(发生异常。。。。。);System.out.println(记录id插入失败。。。。);conn.rollback();  //出现异常事务回滚。。。throw new Exception();}else{conn.commit();System.out.println(记录id插入成功。。。。);}} catch (SQLException e) {System.out.println(创建statement失败);e.printStackTrace();}finally{if(statement!null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}}}}3)模拟用户请求的线程类:package jdbcPool.thread;import jdbcPool.business.StudentService;public class Request implements Runnable{private String id;public Request(String id) {this.idid;}Overridepublic void run() {//模仿service的单例模式try {StudentService.getInstance().insert(this.id, nameid, noid);} catch (Exception e) {e.printStackTrace();}}}4) 测试类:package jdbcPool.test;import jdbcPool.thread.Request;public class Main {//两百个线程并发访问同一个connectionpublic static void main(String[] args){for(int i1300;i1500;i){Thread thnew Thread(new Request(String.valueOf(i)));th.start();}}}5)结果分析打印台出现的结果:记录1489插入成功。。。。记录1490插入成功。。。。记录1491插入成功。。。。记录1495插入成功。。。。记录1492插入成功。。。。记录1493插入成功。。。。记录1494插入成功。。。。记录1496插入成功。。。。记录1497插入成功。。。。记录1498插入成功。。。。记录1499插入成功。。。。记录1300插入成功。。。。发生异常。。。。。记录1350插入失败。。。。java.lang.Exceptionat jdbcPool.business.StudentService.insert(StudentService.java:38)at jdbcPool.thread.Request.run(Request.java:18)at java.lang.Thread.run(Unknown Source)数据库中的表数据:id为1350的记录竟然成功的添加进数据库了造成这一现象的原因显然是在添加id为1350的记录的线程遇到异常还没有来得及数据回滚时别的线程先调用了 connection.commit()方法以至于把不该提交的数据提交到数据库了。6)  总结:在多线程的环境中在不对connection做线程安全处理的情况下使用单个connection会引起事务的混乱....影响jdbc事务的使用。。。
http://www.zqtcl.cn/news/241100/

相关文章:

  • 建设一个网站的意义印刷东莞网站建设技术支持
  • 80端口被封怎么做网站个人网站做支付接口
  • 如何区分网站开发语言建设网站地图素材
  • 建网站的流程怎么投稿各大媒体网站
  • 品牌推广的步骤和技巧专业seo培训学校
  • 新网站上线怎么做seo网站建设语言什么语言
  • 山东省住房城乡和建设厅网站黄页网站推广下载免费
  • 网站建设与运营的论文的范本百度秒收录蜘蛛池
  • asp.net做音乐网站wordpress伪静态规则iis
  • seo 网站优化2021给个最新网站
  • 做废铝的关注哪个网站好seo推广优化的方法
  • 广州活动网站设计电影网站建设策划书
  • 4a景区网站建设标准网站建设排名优化公司
  • 闲置服务器做网站简单做图网站
  • 网站建设制作软件叫啥网盟推广是什么
  • 常州市住房建设局网站大连设计网站的公司
  • 通用wap网站生成系统wordpress 安装旧版本
  • 做网站用的产品展示横幅手机app开发技术
  • 学校网站模板 中文版沈阳seo博客
  • seo策划方案整站优化服务
  • 灵芝产品网站建设方案wordpress登录开发
  • 企业网站软件开发部署php网站
  • 云服务器怎么搭建网站网站制作软件是什么
  • 网站建设的结尾官网网站设计
  • 网站开发网页超链接路径如何用dw修改wordpress的首页
  • 龙岗开发公司网站建设简述网站的制作流程
  • 杭州手机建站模板尤溪建设局网站
  • 北京手机网站设计报价网站建设计划表
  • php做的网站如何该样式如何卸载安装wordpress
  • 建设网站公司哪家性价比高最新推广注册app拿佣金