编写JDBC连接数据库方法时将方法声明为synchronized方法的必要性具体体现在什么场景?

问题描述

例如这么一个方法public static synchronized Connection getCon() throws Exception{ try{ Class.forName(dirvername); con.DriverManager.getConnection(url); return con; }catch(SQLException e){ System.err.println(e.getMessage()); throw e; } }RT,如果synchronized不加的话,有可能出现哪些场景使程序出错?

解决方案

不用加Class.forName(dirvername); 在加载类时会执行一段static代码,如oracleDriver static { Timestamp localTimestamp = Timestamp.valueOf("2000-01-01 00:00:00.0"); try { if (defaultDriver == null) { defaultDriver = new OracleDriver(); DriverManager.registerDriver(defaultDriver); } } catch (RuntimeException localRuntimeException) { } catch (SQLException localSQLException) { } _Copyright_2004_Oracle_All_Rights_Reserved_ = null; }static方法会有类加载器保证 线程安全
解决方案二:
适用于多线程的情况下,多个线程都调用同一个 getCon()方法获取数据库连接的时候,如果不加synchronized的话,会出现问题,比如两个线程获取了同一个连接,这样在后面的事务处理中会互相影响,比如一个线程关闭了连接,但另一个线程正在使用等等。

时间: 2024-08-01 16:40:03

编写JDBC连接数据库方法时将方法声明为synchronized方法的必要性具体体现在什么场景?的相关文章

android中Bundle作为方法参数的数据类型声明时的问题

问题描述 android中Bundle作为方法参数的数据类型声明时的问题 那么Bundle的数据类型是什么,是属于String类吗,归根结底是二进制数据101010101吗 解决方案 Bundle内部就是一个map,可以存储任何对象,key是String类型 解决方案二: ArrayMap mMap = null; 解决方案三: ArrayMap<String, Object> mMap = null; 解决方案四: 本质上所有的数据在计算机里都是二进制数据. 最简单的,一个整数,比如1,就是

JDBC连接数据库的方法汇总_java

本文实例总结了JDBC连接数据库的方法.分享给大家供大家参考,具体如下: 1. MySQL(http://www.mysql.com) Class.forName( "org.gjt.mm.mysql.Driver" ); cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd ); 2. PostgreSQL(http

编写Bash Shell通过gnuplot绘制系统性能数据图的方法

  这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下 使用步骤: 1.设置一个定时任何 执行getperf.sh,采集性能数据 2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压 3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中 4.安装gnuplot程序(这里下载) 5.将字体文件夹,拷贝到/usr/share/fonts/目录 6.直接运行 bash per

vs2010修改状态栏的CStatusBar指针的的SetPaneText()方法时死活不对问题

vs2010的mfc在有些地方不太一样不容易注意到,今天在修改状态栏的时候,就碰见了问题,死活修改不了. 参照下面的帖子:   点击打开链接   :   使用VS2010更改MFC程序的状态栏 2011-04-19 17:12 by 愤怒的青蛙, 783 阅读, 0 评论, 收藏,  编辑 这两天试了不想再用恶心的VC6.0,改用VS2010试了一下,发现区别不大,但是在细节上,貌似VS2010可以使用原来的MFC类,但是似乎总是有问题,不太好用.今天就遇到一个问题,本来是最简单的在状态栏显示鼠

解决采集时出现msxml3.dll 错误的方法_应用技巧

采集时出现: msxml3.dll 错误 '800c0005'  系统未找到指定的资源.  /Admin/Item/Admin_ItemFunction.asp,行166  我查了资料: 在运用xmlhttp组件编写程序中,会碰到 "msxml3.dll 错误 '800c0005' 系统未找到指定的资源." 这种错误,网上对这种错误的产生原因有很多钟解释,大体说是因为防火墙或UDP站口权限造成了,也说了相应的解决办法.其它有时候也未必.其实错误的描述中就说出了主要的原因 "系

iOS重写父类中的方法时要先调用父类中的方法的原因

现有两个类: 1.Object001继承自NSObject #import <Foundation/Foundation.h>   @interface Object001 : NSObject   //Object001的头文件,我只是在这里面声明了个方法 -(void)printfString;   @end   #import "Object001.h"   @implementation Object001   //Object001的实现文件,我实现了声明的pri

java-代码中子类在调用重名方法时返回结果为null,究竟调用过程是怎样的?

问题描述 代码中子类在调用重名方法时返回结果为null,究竟调用过程是怎样的? class father { private String name; father(String name) { this.name=name; } public String get_name() { return this.name; } } class son extends father { private String name; son(String name) { super(name); } pub

解决采集时出现msxml3.dll 错误的方法

采集时出现: msxml3.dll 错误 '800c0005' 系统未找到指定的资源. /Admin/Item/Admin_ItemFunction.asp,行166 我查了资料: 在运用xmlhttp组件编写程序中,会碰到 "msxml3.dll 错误 '800c0005' 系统未找到指定的资源." 这种错误,网上对这种错误的产生原因有很多钟解释,大体说是因为防火墙或UDP站口权限造成了,也说了相应的解决办法.其它有时候也未必.其实错误的描述中就说出了主要的原因 "系统未找

使用Wordpress插件时出现中文乱码的解决方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 用wordpress建网站的好处就在于,可以使用N多主题和N多的插件,由于wordpress在国外的使用时期较长,很多插件都是国外的用户开发的.对于中文的支持不是很好.经常使用WP一定会遇到插件编码问题,今天影子给大家讲一下关于使用wordpress插件时出现中文乱码的解决方法. 一.起因: 今天就遇到一个插件,输入中文后,保存,查看,显示输