本篇內(nèi)容主要講解“Java多線程環(huán)境下SimpleDateFormat類的安全轉(zhuǎn)換方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Java多線程環(huán)境下SimpleDateFormat類的安全轉(zhuǎn)換方法”吧!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、南鄭網(wǎng)站維護(hù)、網(wǎng)站推廣。
一、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能使線程綁定到指定的對象 private static ThreadLocalt = new ThreadLocal (); 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(); } }}
到此,相信大家對“Java多線程環(huán)境下SimpleDateFormat類的安全轉(zhuǎn)換方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!