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

网站建设与维护案例中小企业怎么优化网站

网站建设与维护案例,中小企业怎么优化网站,网络游戏端游,广元建设银行网站目录 前言 正文 1.出现异常 2.解决方法1 3.解决方法2 总结 前言 SimpleDateFormat 类是 Java 中处理日期和时间格式化和解析的类#xff0c;但它并不是线程安全的。这意味着多个线程不能安全地共享一个 SimpleDateFormat 实例进行日期和时间的解析和格式化。当多个…目录 前言  正文  1.出现异常  2.解决方法1  3.解决方法2  总结 前言  SimpleDateFormat 类是 Java 中处理日期和时间格式化和解析的类但它并不是线程安全的。这意味着多个线程不能安全地共享一个 SimpleDateFormat 实例进行日期和时间的解析和格式化。当多个线程共享同一个 SimpleDateFormat 实例时会因为 SimpleDateFormat 内部维护的日历字段例如Calendar 对象等的竞争条件而导致解析和格式化错误。 正文  类 SimpleDataFormat 的可以对日期进行解析与格式化但在使用时如果不想使用 0 进行填充比如 2000-01-02 只想转换成 2002-1-2 我们需要在代码上进行处理示例代码如下。  package org.example.SimpleDataFormat;import java.text.ParseException; import java.text.SimpleDateFormat;public class Run {public static void main(String[] args) throws ParseException {String dataString1 2000-1-1;String dataString2 2000-11-18;SimpleDateFormat format1 new SimpleDateFormat(yyyy-M-d);SimpleDateFormat format2 new SimpleDateFormat(yyyy-MM-dd);//先按照日期模式将字符串解析成日期再格式化成时间字符串。System.out.println(format1.format(format1.parse(dataString1)));System.out.println(format2.format(format2.parse(dataString1)));System.out.println(format1.format(format1.parse(dataString2)));System.out.println(format2.format(format2.parse(dataString2)));} }打印结果如下 但 SimpleDateFormat 在多线程环境中使用类容易造成数据转换及处理不准确因为类 SimpleDateFormat 并不是线程安全的。   1.出现异常  本示例将展示使用类 SimpleDataFormat 在多线程环境中处理日期时得到错误结果这也是在多线程环境中开发经常遇到的问题。  ackage org.example.SimpleDataFormat;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class formatError {static class MyThread extends Thread {private SimpleDateFormat sdf;private String dateString;public MyThread(SimpleDateFormat sdf, String dateString) {this.sdf sdf;this.dateString dateString;}Overridepublic void run() {try {Date dateRef sdf.parse(dateString);String newDataString sdf.format(dateRef);if (!newDataString.equals(dateString)) {System.out.println(ThreadName this.getName() 报错了 日期字符串 dateString 转换成的日期为 newDataString);}} catch (ParseException e) {e.printStackTrace();}}}public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);String[] dateStringArray new String[]{2000-01-01,2000-01-02,2000-01-03,2000-01-04,2000-01-05,2000-01-06,2000-01-07,2000-01-08,2000-01-09,2000-01-10,};MyThread[] threads new MyThread[10];for (int i 0; i 10; i) {threads[i] new MyThread(sdf,dateStringArray[i]);}for (int i 0; i 10; i) {threads[i].start();}} } 运行结果如图 从打印的结果来看使用单例的类 SimpleDateFormat 在多线程环境中处理日期极易出现转换错误的情况。  甚至由于竞争导致解析逻辑的数字处理部分冲突控制台照成了错误输出 。 2.解决方法1  第一种解决办法的原理是满足竞争创建多个类 SimpleDateFormat 的实例。  package org.example.SimpleDataFormat;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class formatOK1 {static class DateTools{public static Date parse(String formatPattern, String dateString) throws ParseException {return new SimpleDateFormat(formatPattern).parse(dateString);}public static String format(String formatPattern, Date date) {return new SimpleDateFormat(formatPattern).format(date);}}static class MyThread extends Thread {private SimpleDateFormat sdf;private String dateString;public MyThread(SimpleDateFormat sdf, String dateString) {this.sdf sdf;this.dateString dateString;}Overridepublic void run() {try {Date dateRef DateTools.parse(yyyy-MM-dd,dateString);String newDataString DateTools.format(yyyy-MM-dd,dateRef);if (!newDataString.equals(dateString)) {System.out.println(ThreadName this.getName() 报错了 日期字符串 dateString 转换成的日期为 newDataString);}} catch (ParseException e) {e.printStackTrace();}}}public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);String[] dateStringArray new String[]{2000-01-01,2000-01-02,2000-01-03,2000-01-04,2000-01-05,2000-01-06,2000-01-07,2000-01-08,2000-01-09,2000-01-10,};MyThread[] threads new MyThread[10];for (int i 0; i 10; i) {threads[i] new MyThread(sdf,dateStringArray[i]);}for (int i 0; i 10; i) {threads[i].start();}} } 运行结果如图 控制台没有异常信息输出。 3.解决方法2  还有一种更简单的方法那就是使用 ThreadLocal 包装SimpleDateFormat。ThreadLocal 可以为每个线程提供一个单独的 SimpleDateFormat 实例能使线程绑定到指定对象。使用该类也可以解决多线程环境中类 SimpleDateFormat 处理日期时出现错误的问题。 package org.example.SimpleDataFormat;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class formatOK2 {static class DateTools {private static ThreadLocalSimpleDateFormat t1 new ThreadLocal();public static SimpleDateFormat getSimpleDateFormat(String datePattern) {SimpleDateFormat sdf null;sdf t1.get();if (sdf null) {sdf new SimpleDateFormat(datePattern);t1.set(sdf);}return sdf;}}static class MyThread extends Thread {private SimpleDateFormat sdf;private String dateString;public MyThread(SimpleDateFormat sdf, String dateString) {this.sdf sdf;this.dateString dateString;}Overridepublic void run() {try {Date dateRef DateTools.getSimpleDateFormat(yyyy-MM-dd).parse(dateString);String newDataString DateTools.getSimpleDateFormat(yyyy-MM-dd).format(dateRef);if (!newDataString.equals(dateString)) {System.out.println(ThreadName this.getName() 报错了 日期字符串 dateString 转换成的日期为 newDataString);}} catch (ParseException e) {e.printStackTrace();}}}public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);String[] dateStringArray new String[]{2000-01-01,2000-01-02, 2000-01-03, 2000-01-04,2000-01-05, 2000-01-06, 2000-01-07,2000-01-08, 2000-01-09, 2000-01-10,};MyThread[] threads new MyThread[10];for (int i 0; i 10; i) {threads[i] new MyThread(sdf, dateStringArray[i]);}for (int i 0; i 10; i) {threads[i].start();}} }运行结果 控制台没有异常信息输出说明 ThreadLocal 解决了 SimpleDateFormat 非线程安全问题。   总结 加油
http://www.hkea.cn/news/14294712/

相关文章:

  • dedecms 门户网站垡头做网站的公司
  • 临沂网站优化网站建设电话销售的话术
  • wordpress网站更新开网店哪些平台不收费
  • 做知识问答的网站dede模板打网站显示栏logo
  • 如何做拉勾勾网站宁波网站制作公司费用价格
  • 网页显示站点不安全可以上传图片的公司网站
  • 有哪些网页游戏网站网站用图片做背景
  • 威海网站网站建设html5旅游网站模板
  • 长沙网站设计公司哪家好免费装修效果图大全
  • 扫二维码进入个人的购物网站如何做大型网站建设济南兴田德润团队怎么样
  • 富锦网站传媒广告公司名称
  • 注册网站平台电商小程序平台
  • 算命网站该怎样做深圳网站建设公司乐云seo
  • 当牛做吗网站源代码分享电子商务网络技术
  • 做一个什么样的网站做磁力解析网站
  • 设计师投资做项目网站龙之向导外贸论坛
  • 北京专业制作网站公司哪家好公司网站运营维护单位
  • 网站建设与实践模板wordpress兼容php版本
  • 招聘网站建设人员集宁做网站
  • 定制搭建网站wordpress怎么调用m3u8视频
  • 黄埔做网站高清效果图网站
  • 百度做的网站 后台管理怎么进入网站建设一般字体多大
  • dw做存资料网站佛山关键词网站排名
  • 怎么建设菠菜网站培训机构倒闭
  • 杭州网站设计公司有哪些wordpress用户上传图片
  • 营销型企业网站项目策划表软文发稿平台有哪些
  • 公司网站建设需要注意事项专门做外贸的的网站有哪些
  • 一个域名权重3如果做网站的话权重会降为0吗长沙做企业网站的公司
  • 网站建设合同 含维护费广东圆心科技网站开发
  • 全球速卖通的信用评价分为哪两类产品seo怎么优化