中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java多線程環境下SimpleDateFormat類安全轉換

發布時間:2020-10-17 19:54:58 來源:腳本之家 閱讀:168 作者:三名狂客 欄目:編程語言

一、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;
  }
  
 @Override
 public void run() {
 
 try {
  //System.out.println(dateString);
  //剛開始日期格式設置錯誤為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()+"報錯日期"+dateString+" 轉換日期"+newDateString);
  }else {
  System.out.println("ThreadName="+this.getName()+"日期"+dateString+"  轉換日期"+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 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;
 }
}

二、線程狀態和線程組

(2)線程5狀態
//NEW 尚未啟動的線程
//RUNNABLE Java虛擬機中執行的線程
//TERMINATED 已經退出的線程
//BLOCKED 阻塞受監視的線程
//WAITING 無限等待另一個線程
//TIMED_WAITING 等待另一個線程指定時間

package state;
/**
 * 線程中狀態和線程組
 * @author zc
 *
 */
public class MyThread extends Thread{
  //NEW
  //RUNNABLE
  //TERMINATED
  //BLOCKED
  //WAITING
  //TIMED_WAITING
 public MyThread() {
 System.out.println("構造方法中的狀態: "+Thread.currentThread().getState());
 }
 @Override
 public void run() {
 System.out.println("run方法中的狀態:"+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方法中的狀態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 block
  e.printStackTrace();
 }
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石首市| 宾阳县| 乌苏市| 额济纳旗| 梅河口市| 太仆寺旗| 锡林郭勒盟| 石渠县| 白玉县| 项城市| 颍上县| 台中县| 上高县| 巴塘县| 武安市| 开封县| 广州市| 张家川| 祁阳县| 乌海市| 获嘉县| 洛阳市| 榕江县| 象州县| 天全县| 龙川县| 治多县| 轮台县| 青海省| 重庆市| 宁乡县| 嘉荫县| 林周县| 巴塘县| 温州市| 观塘区| 彭州市| 河北省| 汝南县| 永靖县| 黑河市|