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

美橙网站建设经典案例苏州代理注册公司

美橙网站建设经典案例,苏州代理注册公司,网址你懂我意思正能量不用下载,网站高质量链群怎么做前言 工作或学习过程中难免会接触到时间(Date)相关的内容,比如String类型转为Date类型,或者Date类型转为String类型,jdk为我们提供了一套完善的日期格式化工具,DateFormat类,使用者可以使用该接…

前言

工作或学习过程中难免会接触到时间(Date)相关的内容,比如String类型转为Date类型,或者Date类型转为String类型,jdk为我们提供了一套完善的日期格式化工具,DateFormat类,使用者可以使用该接口实现常用日期的格式化。但是这里面有个坑…

DateFormat使用

package com.cz.threadLocal;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** @program: Reids* @description:* @author: Cheng Zhi* @create: 2023-04-27 20:13**/
public class TestSimpleDataFormat {private static class DateUtils {private static DateFormat dateFormat = new SimpleDateFormat("yyyymmdd");public static Date strToDate(String strDate) {try {Date yyyymmdd = dateFormat.parse(strDate);return yyyymmdd;} catch (ParseException e) {e.printStackTrace();}return null;}}public static void main(String[] args) {//System.out.println(DateUtils.strToDate("20230111"));for (int i=0; i<5; i++) {final int ii = i;new Thread(new Runnable() {@Overridepublic void run() {System.out.println(DateUtils.strToDate("2023011" + ii));}}).start();}}
}

以上就是一个日期转换的测试类,但是实际运行起来会报错,如下:

image.png

原因是什么呢?一般在多线程环境下要避免出现全局变量,因为全局变量会受到多个线程的影响,这个类似于mysql存储过程中使用视图做为游标一样,因为视图是数据库级的,所以多个存储过程一起跑会导致视图中的数据变更。java中也是一样的,全局变量会被各个线程去读取或修改。就上面的例子而言,这里有多处问题:
1、private static DateFormat dateFormat = new SimpleDateFormat(“yyyymmdd”); 使用static修饰,这个就相当于多个线程会共享,所以这里本身就是不安全的。
2、SimpleDateFormat这个类本身就是不安全的,如下:

image.png

该类中使用了全局变量。

image.png

CalendarBuilder中存在有一个establish方法,在执行该方法时,会将全局变量中的内容清除(这里使用的是逻辑清除,即全部设置为0),所以多个线程下,如果线程A清除了stamp[]中的内容,线程B要使用stamp[]中的内容,这里就会产生异常。

因此在多线程中使用DateFormat时要考虑线程安全问题,既然说到线程安全,那一般就有如下几个方法:
1、每次使用new 一个新的对象,但是这样效率很低。
2、在使用DateFormat的时候,加锁。
3、将DateFormat对象使用ThreadLocal来存储。
修改后的代码如下:

package com.cz.threadLocal;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** @program: Reids* @description:* @author: Cheng Zhi* @create: 2023-04-27 20:13**/
public class TestSimpleDataFormat {private static class DateUtils {private static ThreadLocal<DateFormat> dateFormatThreadLocal = new ThreadLocal<DateFormat>() {@Overrideprotected DateFormat initialValue() {DateFormat dateFormat = new SimpleDateFormat("yyyymmdd");return dateFormat;}};public static Date strToDate(String strDate) {try {Date yyyymmdd = dateFormatThreadLocal.get().parse(strDate);return yyyymmdd;} catch (ParseException e) {e.printStackTrace();}return null;}}public static void main(String[] args) {//System.out.println(DateUtils.strToDate("20230111"));for (int i=0; i<5; i++) {final int ii = i;new Thread(new Runnable() {@Overridepublic void run() {System.out.println(DateUtils.strToDate("2023011" + ii));}}).start();}}
}

运行效果:

image.png

http://www.sczhlp.com/news/107018/

相关文章:

  • 安全邮箱注册网站完整的品牌推广方案
  • 深圳策划公司网站新手做啥网站好
  • 实战有效的Web时序攻击技术剖析
  • 免费的国际网站建设北辰苏州网站建设
  • 澄海玩具网站建设公司计算机网络技专业术网站开发
  • 速橙科技有限公司网站建设wordpress创建页面模板
  • 合肥建设企业网站协会工作方案网站建设困难
  • 深圳做网站seo公众号版面设计创意
  • 我们究竟在用钱交换什么?
  • 蚌埠网站建设文章wordpress 商家定位
  • 自己办网站审批流程四川省住房和城乡建设厅网站打不开
  • 代做网站在哪找活wordpress半次元主题
  • 内蒙古市最新新闻seo积分系统
  • 克拉玛依建设局网站装修素材网站有哪些
  • 品牌网站设计制作哪家正规哪个网站有免费
  • 公众号的微网站开发克拉玛依网站建设
  • 互联网站点建立网站主页注意那些方面
  • 单页网站seo如何优化ps制作网页步骤
  • 官方网站开发哪家好做网站潜江
  • jupyterLab如何使用
  • HyperWorks许可监控
  • C++拷贝构造函数详解:从浅拷贝到深拷贝
  • ThreadLocal
  • K8S探针
  • 百度云网站备案流程购物车网站源码
  • 彩票网站开发需求文档江苏宜兴做网站的电话
  • 如何制作自己的网站的邮箱天天炫拍免费做相册管方网站下载
  • 建设官方网站的请示好的文化网站模板
  • 罗湖网站设计费用企业融资成本
  • 常州网站推广公司哪家好广东如何做网站设计