Java多線程環(huán)境下SimpleDateFormat類安全轉(zhuǎn)換
更新時(shí)間:2020年02月09日 15:03:01 作者:三名狂客
這篇文章主要介紹了Java多線程環(huán)境下SimpleDateFormat類安全轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
一、SimpleDateFormat類
package state; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * SimpleDateFormat類負(fù)責(zé)日期的轉(zhuǎn)換與格式化 * 解決SimpleDateFormat類多線程環(huán)境下轉(zhuǎn)換錯(cuò)誤問題 * @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; } @Override public void run() { try { //System.out.println(dateString); //剛開始日期格式設(shè)置錯(cuò)誤為YYYY-MM-dd Date 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()+"報(bào)錯(cuò)日期"+dateString+" 轉(zhuǎn)換日期"+newDateString); }else { System.out.println("ThreadName="+this.getName()+"日期"+dateString+" 轉(zhuǎn)換日期"+newDateString); } } catch (ParseException e) { // TODO Auto-generated catch block e.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能使線程綁定到指定的對(duì)象 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; } }
二、線程狀態(tài)和線程組
(2)線程5狀態(tài) //NEW 尚未啟動(dòng)的線程 //RUNNABLE Java虛擬機(jī)中執(zhí)行的線程 //TERMINATED 已經(jīng)退出的線程 //BLOCKED 阻塞受監(jiān)視的線程 //WAITING 無限等待另一個(gè)線程 //TIMED_WAITING 等待另一個(gè)線程指定時(shí)間 package state; /** * 線程中狀態(tài)和線程組 * @author zc * */ public class MyThread extends Thread{ //NEW //RUNNABLE //TERMINATED //BLOCKED //WAITING //TIMED_WAITING public MyThread() { System.out.println("構(gòu)造方法中的狀態(tài): "+Thread.currentThread().getState()); } @Override public void run() { System.out.println("run方法中的狀態(tài):"+Thread.currentThread().getState()); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { MyThread myThread = new MyThread(); System.out.println("main方法中的狀態(tài)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("活動(dòng)的線程數(shù)量為: " +group.activeCount()); System.out.println("線程組的名稱為: "+group.getName()); try { myThread.start(); Thread.sleep(1000); System.out.println("main方法中的狀態(tài)2 "+ myThread.getState()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
詳解Java前綴樹Trie的原理及代碼實(shí)現(xiàn)
Trie又被稱為前綴樹、字典樹。Trie利用字符串的公共前綴來高效地存儲(chǔ)和檢索字符串?dāng)?shù)據(jù)集中的關(guān)鍵詞,最大限度地減少無謂的字符串比較,其核心思想是用空間換時(shí)間。本文主要介紹了Trie的原理及實(shí)現(xiàn),感興趣的可以了解一下2022-11-11tk-mybatis整合springBoot使用兩個(gè)數(shù)據(jù)源的方法
單純的使用mybaits進(jìn)行多數(shù)據(jù)配置網(wǎng)上資料很多,但是關(guān)于tk-mybaits多數(shù)據(jù)源配置沒有相關(guān)材料,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2021-12-12Java基礎(chǔ)篇之serialVersionUID用法及注意事項(xiàng)詳解
這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之serialVersionUID用法及注意事項(xiàng)的相關(guān)資料,SerialVersionUID屬性是用于序列化/反序列化可序列化類的對(duì)象的標(biāo)識(shí)符,我們可以用它來記住可序列化類的版本,以驗(yàn)證加載的類和序列化對(duì)象是否兼容,需要的朋友可以參考下2024-02-02Springboot導(dǎo)入本地jar后 打包依賴無法加入的解決方案
這篇文章主要介紹了Springboot導(dǎo)入本地jar后 打包依賴無法加入的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Spring整合Quartz實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度的方法
下面小編就為大家?guī)硪黄猄pring整合Quartz實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11