当前位置: 首页 > news >正文

红酒网站设计别墅装修公司排名前十强

红酒网站设计,别墅装修公司排名前十强,推广网站排名,东莞高端品牌网站建设价格专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162

本文目标:

  1. 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter

目录

  • Immutable
    • SimpleDateFormat 非线程安全
    • 可以`synchronized`解决,但效率低
    • DateTimeFormatter 线程安全
      • 线程安全原理
      • 其它不可变设计模式例子
        • Java String类为什么是final的?

Immutable

[ɪˈmjuːtəbl][ɪˈmjuːtəbl]
adj.
不变的;不可改变的;
例句
They free our minds from considering our world as fixed and immutable.
它们改变着人们将世界看作是永恒不变的观点。

在这里插入图片描述

SimpleDateFormat 非线程安全

例子代码

 static void test1(){SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");for (int i = 0; i < 10; i++) {new Thread(()->{try {Date date = dateFormat.parse("1999-09-09");System.out.println(date);}catch (Exception e){e.printStackTrace();}}).start();}
}

有线程会报错如下
在这里插入图片描述

可以synchronized解决,但效率低

static void test2(){SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");for (int i = 0; i < 10; i++) {new Thread(()->{synchronized (dateFormat) {try {Date date = dateFormat.parse("1999-09-09");System.out.println(date);} catch (Exception e) {e.printStackTrace();}}}).start();}
}

DateTimeFormatter 线程安全

static void test3() {DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");for (int i = 0; i < 10; i++) {new Thread(() -> {try {LocalDateTime dateTime = LocalDateTime.parse("2023-01-01 12:00:00", dateTimeFormatter);System.out.println(dateTime);} catch (Exception e) {e.printStackTrace();}}).start();}
}

线程安全原理

首先DateTimeFormatter是个final class, 这样所有线程都能使用它,不会有线程安全问题
在这里插入图片描述

另外:java.time.format.DateTimeFormatter#parseResolved0,也是将输入的format字符串也修饰成final的
在这里插入图片描述

其它不可变设计模式例子

Java String类为什么是final的?
  • value,offset和count这三个变量都是private的,并且没有提供setValue, setOffset和setCount等公共方法来修改这些值,所以在String类的外部无法修改String
  1. 为了实现字符串池

字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么String intern将不能实现,因为这样的话,如果变量改变了它的值,那么其它指向这个值的变量的值也会一起改变

  1. 为了安全 & 线程安全

final不可变,确保线程安全

  1. 为了实现String可以创建HashCode不可变性,提高效率

因为字符串是不可变的,所以在它创建的时候HashCode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。

但也要注意到问题: 对象会创建的比较多,即占用内存会多

http://www.15wanjia.com/news/186029.html

相关文章:

  • 网站 设计公司 温州wordpress js代码编辑器插件下载地址
  • 淘宝客cms网站建设wordpress粉丝
  • 杭州开发网站的公司哪家好重庆市工程建设信息网官方网站
  • 西宁网站东莞短视频的推广方法
  • 做网站的电脑自带软件是什么免费做代理又不用进货
  • 给我一个用c 做的网站网站正在建设中色
  • 一站式网站建设多少钱静海网站建设制作
  • 门户网站建设公司案例wordpress 内存超限
  • 菜鸟教程网站建设程序员做项目网站
  • 福州企业网站开发wordpress 前端传文件
  • 静态网站如何建设鲜花网站设计论文
  • 成品网站管系统国家企业信息公示网查询全国官网
  • 彩票网站开发 晓风国内做app软件开发最好的公司
  • 网站建设数据库模板西安网站制作开发
  • 门窗网站源码百度seo优化工具
  • 因酷网站建设西安专业网站设计
  • 网站后台管理默认密码江油建设局网站
  • 沈阳网站建设策划方案品牌网站开发价格
  • 做马甲的网站廊坊视频优化效果
  • 搭建企业网站具体过程网站后期维护工作包括哪些
  • 在线网站wordpress 朋友圈
  • 聚合影视网站建设微信网站开发与网站实质区别
  • 企业做淘宝网站需要多少钱福州建设网站
  • 做影视网站怎么样不犯法简单广告牌制作方法
  • seo两个域名一个网站有影响呼和浩特公司网站制作
  • 免费html网站开发教程手机网站jquery底部导航菜单
  • 泉州服装网站建设网络运维工程师薪资待遇
  • 找事情做的网站seo 页面
  • 一个内部网站如何做外网映射wordpress pdf预览插件
  • 威海建设集团官方网站软文广告500字