多线程环境下SimpleDateFormat类安全转换

2024-06-21 21:08

本文主要是介绍多线程环境下SimpleDateFormat类安全转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、SimpleDateFormat类

package state;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** SimpleDateFormat类负责日期的转换与格式化*  解决SimpleDateFormat类多线程环境下转换错误问题* @author zc**/
public class SimpleDateFormatThread  extends Thread{private SimpleDateFormat sdf;private String dateString;public SimpleDateFormatThread(SimpleDateFormat sdf,String dateString) {super();this.sdf =sdf;this.dateString =dateString;}@Overridepublic void run() {try {//System.out.println(dateString);//刚开始日期格式设置错误为YYYY-MM-ddDate date =DateTools.getSimpleDateFormat("yyyy-MM-dd").parse(dateString);// System.out.println(date);String newDateString =DateTools.getSimpleDateFormat("yyyy-MM-dd").format(date).toString();if(!newDateString.equals(dateString)) {System.out.println("ThreadName="+this.getName()+"报错日期"+dateString+" 转换日期"+newDateString);}else {System.out.println("ThreadName="+this.getName()+"日期"+dateString+"   转换日期"+newDateString);}} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");String[] dateStringArray =new String[]{"2020-02-05","2020-02-06","2020-02-07","2020-02-08"};SimpleDateFormatThread []threadArray= new SimpleDateFormatThread[4];for(int i=0;i<4;i++) {threadArray[i] =new SimpleDateFormatThread(sdf,dateStringArray[i]);}for(int i=0;i<4;i++) {threadArray[i].start();}}
}class DateTools{//ThreadLocal能使线程绑定到指定的对象private static ThreadLocal<SimpleDateFormat> t = new ThreadLocal<SimpleDateFormat>();public static SimpleDateFormat getSimpleDateFormat(String datePattern) {SimpleDateFormat sdf=null;sdf =t.get();if(sdf==null) {sdf =new SimpleDateFormat(datePattern);t.set(sdf);	}return sdf;}
}

二、线程状态和线程组

(1)线程5状态

//NEW 尚未启动的线程
//RUNNABLE Java虚拟机中执行的线程
//TERMINATED 已经退出的线程
//BLOCKED 阻塞受监视的线程
//WAITING 无限等待另一个线程
//TIMED_WAITING 等待另一个线程指定时间

package state;
/***  线程中状态和线程组* @author zc**/
public class MyThread extends Thread{//NEW//RUNNABLE//TERMINATED//BLOCKED//WAITING//TIMED_WAITINGpublic MyThread() {System.out.println("构造方法中的状态: "+Thread.currentThread().getState());}@Overridepublic void run() {System.out.println("run方法中的状态:"+Thread.currentThread().getState());try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {MyThread myThread = new MyThread();System.out.println("main方法中的状态1 "+ myThread.getState());Thread t1 =  new Thread();Thread t2 =  new Thread();ThreadGroup group =new ThreadGroup("左氏线程组");Thread t3 =  new Thread(group,t1);Thread t4 =  new Thread(group,t2);t3.start();t4.start();System.out.println("活动的线程数量为:  " +group.activeCount());System.out.println("线程组的名称为:  "+group.getName());try {myThread.start();Thread.sleep(1000);System.out.println("main方法中的状态2  "+ myThread.getState());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

这篇关于多线程环境下SimpleDateFormat类安全转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082342

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或