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

百度收录最好的网站怎么建立

百度收录最好的网站,怎么建立,鹿泉网络推广,游戏优化大师官方下载文章目录 1. 使用局部变量#xff08;每个线程独立一个实例#xff09;2. 使用 ThreadLocalSimpleDateFormat3. 使用 DateTimeFormatter#xff08;Java 8 及以上#xff09;4. 使用 DateFormat 子类#xff08;如 FastDateFormat#xff09;5. 使用 synchronize… 文章目录 1. 使用局部变量每个线程独立一个实例2. 使用 ThreadLocalSimpleDateFormat3. 使用 DateTimeFormatterJava 8 及以上4. 使用 DateFormat 子类如 FastDateFormat5. 使用 synchronized 或其他锁不推荐 因为SimpleDateFormat类的内部有一个Calendar对象引用这个对象主要用来储存和这个 SimpleDateFormat相关的日期信息。 当我们把SimpleDateFormat作为多个线程的共享资源来使用的时候那就意味着多个线程之间会共享这个 SimpleDateFormat里面的Calendar引用。如果多个线程同时于操作这个Calendar对象的情况下就会出现数据脏 读的现象从而导致一些不可预料的错误。 那么保证SimpleDateFormat线程安全呢 1、可以把SimpleDateFormat定义成非全局使用的局部变量这样每个线程调用的时候都创建一个新的实例。 2、可以使用ThreadLocal把SimpleDateFormat变成一个线程私有的对象。 3、定义SimpleDateFormat的时候加上同步锁这样就能够保证在同一时刻只允许一个线程操作 4、使用Java 8的新特性在Java8中引入了一些线程安全的日期操作API比如LocalDateTimer、 DateTimeFormatter 等等。 SimpleDateFormat oldFormatter new SimpleDateFormat(yyyy/MM/dd); Date date1 new Date(); System.out.println(oldFormatter.format(date1));// Java 8 DateTimeFormatter newFormatter DateTimeFormatter.ofPattern(yyyy/MM/dd); LocalDate date2 LocalDate.now(); System.out.println(date2.format(newFormatter));static final ThreadLocalSimpleDateFormat SIMPLE_DATE_FORMAT_LOCAL ThreadLocal.withInitial(() - new SimpleDateFormat(yyyy-MM-dd HH:mm:ss) );SimpleDateFormat 在 Java 中是一个线程不安全的类因此在多线程环境下直接共享同一个 SimpleDateFormat 实例可能导致意外的结果或错误。例如多个线程共享一个 SimpleDateFormat 实例时可能会互相覆盖彼此的格式化结果产生不可预测的行为。 最优解使用 ThreadLocal 或 DateTimeFormatterJava 8 及以上是最佳选择。 不推荐的方案synchronized 锁定 SimpleDateFormat 实例性能开销较大。 推荐的替代品如果可以使用 Java 8 及以上版本优先使用 DateTimeFormatter因为它是线程安全且现代化的日期时间格式化工具。 选择适合您项目需求的方案以确保在多线程环境下安全有效地使用日期格式化。 为了在多线程环境下安全地使用 SimpleDateFormat有几个常见的解决方法 1. 使用局部变量每个线程独立一个实例 最简单的方法是让每个线程都有自己独立的 SimpleDateFormat 实例。这可以通过将 SimpleDateFormat 定义为方法内的局部变量来实现这样每个线程在调用方法时都会创建并使用自己的实例。 public String formatDate(Date date) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);return sdf.format(date); }这样每个线程都使用自己独立的 SimpleDateFormat 实例避免了线程安全问题。 2. 使用 ThreadLocal 如果需要在多个方法或类中使用 SimpleDateFormat可以考虑使用 ThreadLocal 来确保每个线程有自己独立的 SimpleDateFormat 实例。ThreadLocal 可以为每个线程提供一个独立的变量副本从而避免共享 SimpleDateFormat 实例导致的线程安全问题。 public class DateFormatUtil {// 使用 ThreadLocal 来为每个线程提供独立的 SimpleDateFormat 实例private static final ThreadLocalSimpleDateFormat threadLocalDateFormat ThreadLocal.withInitial(() - new SimpleDateFormat(yyyy-MM-dd HH:mm:ss));public static String formatDate(Date date) {SimpleDateFormat sdf threadLocalDateFormat.get();return sdf.format(date);} }解释 ThreadLocal.withInitial() 创建了一个 ThreadLocal 实例并初始化每个线程独立的 SimpleDateFormat。 每个线程调用 threadLocalDateFormat.get() 时都会获取该线程独有的 SimpleDateFormat 实例从而避免了多线程间的共享问题。 3. 使用 DateTimeFormatterJava 8 及以上 从 Java 8 开始java.time 包中的 DateTimeFormatter 提供了线程安全的日期时间格式化工具。DateTimeFormatter 是不可变的并且设计时已经考虑到线程安全问题因此推荐在 Java 8 及以上版本使用 DateTimeFormatter 来代替 SimpleDateFormat。 import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateFormatUtil { // 使用线程安全的 DateTimeFormatter private static final DateTimeFormatter formatter DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”); public static String formatDate(LocalDateTime dateTime) {return dateTime.format(formatter); }} 解释 DateTimeFormatter 是不可变的可以在多个线程中共享而不产生线程安全问题。 该类与 LocalDateTime 等类配合使用支持更丰富的日期时间处理。 4. 使用 DateFormat 子类如 FastDateFormat 如果你使用 Apache Commons Lang 库可以使用 FastDateFormat 替代 SimpleDateFormat。FastDateFormat 是线程安全的设计时就考虑到了性能和线程安全问题。 import org.apache.commons.lang3.time.FastDateFormat;public class DateFormatUtil {// 使用 FastDateFormat 来代替 SimpleDateFormatprivate static final FastDateFormat fastDateFormat FastDateFormat.getInstance(yyyy-MM-dd HH:mm:ss);public static String formatDate(Date date) {return fastDateFormat.format(date);} }解释 FastDateFormat 提供了与 SimpleDateFormat 类似的功能但它是线程安全的可以在多线程环境中安全使用。 5. 使用 synchronized 或其他锁不推荐 另一种方法是通过对 SimpleDateFormat 实例加锁来保证线程安全。尽管这种方法可以确保线程安全但会导致性能瓶颈因此不推荐这种方法特别是在高并发的情况下。 public class DateFormatUtil {private static final SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);public synchronized static String formatDate(Date date) {return sdf.format(date);} }解释 使用 synchronized 确保每次只有一个线程可以访问 formatDate 方法。但这种方法的性能较差因为每次格式化都会等待锁。
http://www.hkea.cn/news/14323897/

相关文章:

  • 网站建设炫彩图片空间站 对接
  • 做网站空间要多大网站建设需要会什么
  • 济南智能网站建设电话西安专业做网站建
  • 怎样用wordpress搭建网站wordpress的XML-RPC
  • 南通建公司网站阿里巴巴商标注册官网
  • 东莞企业做网站暴雪回归
  • 深圳做模板网站app开发公司软件开发公司
  • 客户管理系统网站网站 为何要 备案
  • 影响网站打开速度广西备案工信部网站
  • 做封面下载网站网站查询 工信部
  • 私人接做网站违法么搭建论坛网站使用的系统
  • 简单的企业小网站窝窝在线观看
  • 公众号做电影采集网站会被封网站开发管理制度
  • 建设银行官方网站登录free wordpress template
  • 对网站建设和维护好学吗1小时教你做出个人网页
  • 网站建设知乎国外互联网资讯网站
  • 外贸网站google推广企业网站的设计论文
  • 商务网站建设实践实训心得vi系统设计是什么
  • 网站充值 下模板五星级酒店网站建设
  • 学网页制作需要学什么徐州seo关键词排名
  • 深圳怎么做网站设计公司资质等级
  • 网站建设要规避的建设银行行号网站查询是什么意思
  • 广东省网站集约化建设通知网站被挂马原因
  • 网站建设南京公司网站建设 技术
  • 网站开发专业考啥证书wordpress扫码枪
  • 兼职网站学编程用什么笔记本电脑好
  • 网站模版html中国核工业二四建设有限公司实习安排在公司官方网站哪里看?
  • 网站开发 注意事项莱芜口镇规划
  • 网站建设方案封面网站定制排名
  • seo综合查询站长工具关键词wordpress 漫画网站