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

例如这么一个方法
[code="java"]
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;
}
}
[/code]
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();

[color=red] DriverManager.registerDriver(defaultDriver);
[/color] }

}
catch (RuntimeException localRuntimeException)
{
}
catch (SQLException localSQLException)
{
}

_Copyright_2004_Oracle_All_Rights_Reserved_ = null;

}

static方法会有类加载器保证 线程安全

适用于多线程的情况下,多个线程都调用同一个 getCon()方法获取数据库连接的时候,如果不加synchronized的话,会出现问题,比如两个线程获取了同一个连接,这样在后面的事务处理中会互相影响,比如一个线程关闭了连接,但另一个线程正在使用等等。