[color=darkred][size=medium]之前在写控制双12开关的函数时遇到了SimpleDateFormat多线程问题,首先是我写了这个方法
[img]http://dl.iteye.com/upload/attachment/0077/8009/e7596471-70b4-32d6-8670-d0fa01844306.jpg[/img]
干哥说里面的方法不好理解,并且已经废弃了,于是谷哥写了如下方法
[img]http://dl.iteye.com/upload/attachment/0077/8007/b691e3c4-3d58-3c14-bc10-9310a01926e0.jpg[/img]
当时我说SimpleDateFormat不是线程同步的,并发的时候会不安全,但干哥说这个地方不会导致并发所以我也没有去怀疑验证,所以此处采用了谷哥的方法,直到123那天,开关开启,干哥说果真出现并发问题啦~哈哈,因为每个用户的每个淘单都要去调用到该方法,产生了多线程调用,而SimpleDateFormat是定义为静态属性,查看了资料知道时间格式不是同步的,应当为每个线程单独创建一个实例,如果需要多线程并发地访问一个SimpleDateFormat,必须要线程同步!!!![/size][/color]
[img]http://dl.iteye.com/upload/attachment/0077/8009/e7596471-70b4-32d6-8670-d0fa01844306.jpg[/img]
干哥说里面的方法不好理解,并且已经废弃了,于是谷哥写了如下方法
[img]http://dl.iteye.com/upload/attachment/0077/8007/b691e3c4-3d58-3c14-bc10-9310a01926e0.jpg[/img]
当时我说SimpleDateFormat不是线程同步的,并发的时候会不安全,但干哥说这个地方不会导致并发所以我也没有去怀疑验证,所以此处采用了谷哥的方法,直到123那天,开关开启,干哥说果真出现并发问题啦~哈哈,因为每个用户的每个淘单都要去调用到该方法,产生了多线程调用,而SimpleDateFormat是定义为静态属性,查看了资料知道时间格式不是同步的,应当为每个线程单独创建一个实例,如果需要多线程并发地访问一个SimpleDateFormat,必须要线程同步!!!![/size][/color]