我有一种情况,我必须从Oracle ResultSet中检索时间戳时使用Calendar对象。我想在类级别定义Calendar对象,以便它可以由多个线程以这种方式使用它的单个实例。我知道Calendar本身不是线程安全的,但我不清楚Oracle是如何在Oracle的ResultSet.getTimestamp(String,Calendar)实现中使用它的。查看MySQL的源代码,日历严格用于拉动TimeZone对象(它看起来不会被改变),所以对于MySQL来说它似乎是线程安全的。任何人都可以阐明一个Calendar的单个实例是否可以安全地与Oracle在多线程环境中实现此方法一起使用?ResultSet.getTimestamp(String,Calendar)是否使用Calendar对象线程安全?
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Timestamp ts = rs.getTimestamp("example",cal);
是的,我在想同样的事情。即使我发现它是线程安全的(从反编译它),也不能保证它在后续的驱动程序版本中保持这种状态。 –