最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程環(huán)境下SimpleDateFormat類安全轉(zhuǎn)換

 更新時間:2020年02月09日 15:03:01   作者:三名狂客  
這篇文章主要介紹了Java多線程環(huán)境下SimpleDateFormat類安全轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)換錯誤問題
 * @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è)置錯誤為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+" 轉(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 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 尚未啟動的線程
//RUNNABLE Java虛擬機(jī)中執(zhí)行的線程
//TERMINATED 已經(jīng)退出的線程
//BLOCKED 阻塞受監(jiān)視的線程
//WAITING 無限等待另一個線程
//TIMED_WAITING 等待另一個線程指定時間

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("活動的線程數(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java深入分析與解決Top-K問題

    Java深入分析與解決Top-K問題

    TopK問題即在N個數(shù)中找出最大的前K個,這篇文章將詳細(xì)講解三種方法解決TopK問題,文中代碼具有一定參考價值,快跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • Java手寫一個日志框架的示例代碼

    Java手寫一個日志框架的示例代碼

    日志框架是一種用于記錄和管理應(yīng)用程序運(yùn)行時信息的軟件組件,它通常提供了一套API讓開發(fā)人員能夠在代碼中插入日志語句,下面我們就來學(xué)習(xí)一下如何手寫一個日志框架吧
    2023-12-12
  • Spring如何使用注解的方式創(chuàng)建bean

    Spring如何使用注解的方式創(chuàng)建bean

    這篇文章主要介紹了Spring如何使用注解的方式創(chuàng)建bean,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java構(gòu)建高效結(jié)果緩存方法示例

    Java構(gòu)建高效結(jié)果緩存方法示例

    這篇文章主要介紹了Java構(gòu)建高效結(jié)果緩存方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 一文帶你了解SpringBoot中常用注解的原理和使用

    一文帶你了解SpringBoot中常用注解的原理和使用

    這篇文章主要介紹了一文帶你了解SpringBoot中常用注解的原理和使用
    2022-11-11
  • SpringBoot中yml的數(shù)據(jù)綁定示例

    SpringBoot中yml的數(shù)據(jù)綁定示例

    本文主要介紹了SpringBoot中yml的數(shù)據(jù)綁定示例,借助于YAML的簡潔語法和結(jié)構(gòu)化特性,我們能夠輕松地管理應(yīng)用程序的配置信息,使得配置文件更加清晰易讀,感興趣的可以了解一下
    2023-11-11
  • jmeter中json提取器如何提取多個參數(shù)值

    jmeter中json提取器如何提取多個參數(shù)值

    關(guān)于jmeter中的正則表達(dá)式及json提取器可以提取響應(yīng)值,但是實際可以需要上個接口的多個響應(yīng)值,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下
    2021-11-11
  • 一文揭曉如何在Java中終止一個線程

    一文揭曉如何在Java中終止一個線程

    工作中我們經(jīng)常會用到線程,一般情況下我們讓線程執(zhí)行就完事了,那么你們有沒有想過如何去終止一個正在運(yùn)行的線程呢?本文就來帶大家一起看看
    2023-03-03
  • SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細(xì)節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡(luò)通信細(xì)節(jié)。所有遠(yuǎn)程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02
  • Java中Base64和File之間互轉(zhuǎn)代碼示例

    Java中Base64和File之間互轉(zhuǎn)代碼示例

    這篇文章主要給大家介紹了關(guān)于Java中Base64和File之間互轉(zhuǎn)的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-08-08

最新評論

灯塔市| 鄱阳县| 高尔夫| 大安市| 台北县| 井冈山市| 云龙县| 塘沽区| 越西县| 北流市| 扶沟县| 北流市| 呼图壁县| 葵青区| 葵青区| 胶南市| 郓城县| 抚顺县| 原平市| 集安市| 黑龙江省| 隆子县| 平泉县| 茶陵县| 石河子市| 胶南市| 磴口县| 宝清县| 方山县| 吐鲁番市| 汉沽区| 美姑县| 昌乐县| 法库县| 岑巩县| 铅山县| 石嘴山市| 库伦旗| 沙坪坝区| 独山县| 长治县|