开发者社区> 问答> 正文

代码描述在java语言开发中,如何实现通过加同步锁,解决SimpleDateFormat 使用过程中

代码描述在java语言开发中,如何实现通过加同步锁,解决SimpleDateFormat 使用过程中的线程不安全的问题

展开
收起
huc_逆天 2021-01-11 11:13:32 768 0
1 条回答
写回答
取消 提交回答
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter
    for (int i = 0; i < 100; i++) {
        // 获取当前时间
        Calendar calendar = Calendar.getInstance();
        int finalI = i;
        pool.execute(() -> {
        // 加锁
        synchronized (simpleDateFormat) {
        // 时间增加
        calendar.add(Calendar.DATE, finalI);
        // 通过simpleDateFormat 把时间转换成字符串
        String dateString = simpleDateFormat.format(calendar.getTime());
        // 把字符串放入Set 中
        dates.add(dateString);
        //countDown
        countDownLatch.countDown();
        }
    
    
        });
    }
    

    通过加锁,使多个线程排队顺序执行。避免了并发导致的线程安全问题。其实以上代码还有可以改进的地方,就是可以把锁的粒度再设置的小一点,可以 只对simpleDateFormat.format 这一行加锁,这样效率更高一些。

    2021-01-11 11:14:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载