simpledateformat线程安全吗(Java开发中线程的安全问题以及产生的原因)
本文目录
Java开发中线程的安全问题以及产生的原因
Java如何保证原子性常用的保证Java操作原子性的工具是锁和同步方法(或者同步代码块)。使用锁,可以保证同一时间只有一个线程能拿到锁,也就保证了同一时间只有一个线程能执行申请锁和释放锁之间的代码。与锁类似的是同步方法或者同步代码块。使用非静态同步方法时,锁住的是当前实例;使用静态同步方法时,锁住的是该类的Class对象;使用静态代码块时,锁住的是synchronized关键字后面括号内的对象。
simpledateformat 线程安全吗
我们都知道jdk里面的SimpleDateFormat不是线程安全的,而commons-lang中的DateFormatUtils(或者说FastDateFormat)却是,非常快速描了一眼,发现里面也引用了SimpleDateFormat,那为什么它会线程安全? OK,仔细分析一下. 1,假设我们调用如下方法 public static String format(Date date, String pattern) { return format(date, pattern, null, null); } 间接调用 public static String format(Date date, String pattern, TimeZone timeZone, Locale locale) { FastDateFormat df = FastDateFormat.getInstance(pattern, timeZone, locale); return df.format(date); } 局部变量,暂时没什么问题. 2,进入FastDateFormat public static synchronized FastDateFormat getInstance(String pattern, TimeZone timeZone, Locale locale) { FastDateFormat emptyFormat = new FastDateFormat(pattern, timeZone, locale); FastDateFormat format = (FastDateFormat) cInstanceCache.get(emptyFormat); if (format == null) { format = emptyFormat; format.init(); // convert shell format into usable one cInstanceCache.put(format, format); // this is OK! } return format; } 首先,这是个同步方法. 其次,在构造方法中,只是对4个Final变量赋值. 然后,如果找不到,则调用相应的init方法,这个方法里面也只是使用Final变量来对另外的两个transient变量赋值. 再然后放到map中做缓存(提高速度) 经过上面的操作,保证了只要传递的参数相同(pattern,timeZone,locale),获得的就是同一个实例,但是这个实例所拥有的共享变量是final的,没有其他的机会修改了,只读的share也没关系了. 3,开始format 同样,操作的也只是局部变量或者只读的final,transient变量,也没有问题.
更多文章:

expensive比较级(expensive的比较级和最高级)
2025年2月17日 00:10

living proof(living proof shampoo是什么)
2025年4月4日 15:20

无法建立ssl连接(苹果手机发生ssl错误无法与服务器建立安全连接怎么解决)
2025年2月12日 18:00

parameter是什么意思中文翻译(parameter 是什么意思)
2025年3月11日 19:30

androidsdk下载安装教程(android sdk安装包怎么安装)
2025年4月2日 01:40

php安装mysqli扩展(腾讯云服务器下,怎么安装php的mysqli扩展)
2025年4月1日 07:30

github 教程(怎么在github上建立自己的代码仓库)
2025年4月6日 18:30

insert into select from 主键冲突(Select 中如何忽略“主键重复“错)
2025年3月17日 16:10

ppt基础入门教程(新手怎么入门PPT制作有什么推荐的教程吗)
2025年3月19日 17:40

alphabet(Alphabet为何在股东大会上遭受投资者的批评)
2025年3月12日 18:40

从淘客公司购买淘客app 软件需要注意什么什么源代码,软件归属.里面给的网页后台源代码之类需要些什么?淘客源码是什么
2025年2月19日 23:00