博客
关于我
为什么说SimpleDateFormat是线程不安全的?
阅读量:264 次
发布时间:2019-02-28

本文共 1453 字,大约阅读时间需要 4 分钟。

演示SimpleDateFormat是线程不安全的的示例代码

public class SpringbootApplication {           static ExecutorService executorService = Executors.newFixedThreadPool(10);    //SimpleDateFormat    static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    //搞个set,去重做个数据统计    static Set
set = new HashSet(); //测试的方法 public static String addDate(int seconds) { Date date = new Date(1000 * seconds); String result = sdf.format(date); return result; } } public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { int a = i; executorService.execute(new Runnable() { @Override public void run() { String result = addDate(a); System.out.println(result); set.add(result); } }); } //给个5秒的休眠期,方便子线程都运行完 TimeUnit.SECONDS.sleep(5); System.out.println(set.size()); }}

运行结果:

在这里插入图片描述

在这里插入图片描述

可以发现,运行了2次,set集合里面的数目都是不同的,每次运行的结果都不同,这肯定说不上是线程安全。

在方法里加个synchronized关键字再试试:

public static String addDate(int seconds) {           Date date = new Date(1000 * seconds);        synchronized (SpringbootApplication.class) {               String result = sdf.format(date);            return result;        }    }

在这里插入图片描述

在这里插入图片描述

运行了两次,set集合里面的数目都是100,和我们循环的次数是一样的,符合预期。

总结

通过多次的运行结果,以及加上synchronized关键字后的效果比较,可以确定SimpleDateFormat是线程不安全的。

转载地址:http://adjp.baihongyu.com/

你可能感兴趣的文章
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>
Nacos编译报错NacosException: endpoint is blank
查看>>
nacos自动刷新配置
查看>>
nacos运行报错问题之一
查看>>
Nacos部署中的一些常见问题汇总
查看>>
NACOS部署,微服务框架之NACOS-单机、集群方式部署
查看>>
Nacos配置Mysql数据库
查看>>
Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置在代码中如何引用
查看>>
nacos配置新增不成功
查看>>
nacos配置自动刷新源码解析
查看>>