欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用java8的格式化Date

這篇文章主要講解了“如何使用java8的格式化Date”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用java8的格式化Date”吧!

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、北林ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的北林網(wǎng)站制作公司

SimpleDateFormat 線程不安全

眾所周知 SimpleDateFormat 線程不安全,不少朋友被其坑過。

public class ExampleClass {

	private static final Pattern dateCreateP = Pattern.compile("Дата подачи:\\s*(.+)");
	private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy");

	public static void main(String[] args) {
		ExecutorService executor = Executors.newFixedThreadPool(100);
		while (true) {
			executor.submit(new Runnable() {
				@Override
				public void run() {
					workConcurrently();
				}
			});
		}
	}

	public static void workConcurrently() {
		Matcher matcher = dateCreateP.matcher("Дата подачи: 19:30:55 03.05.2015");
		Timestamp startAdvDate = null;
		try {
			if (matcher.find()) {
				String dateCreate = matcher.group(1);
				startAdvDate = new Timestamp(sdf.parse(dateCreate).getTime());
			}
		} catch (Throwable th) {
			th.printStackTrace();
		}
		System.out.print("OK ");
	}
}

And result :

OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK java.lang.NumberFormatException: For input string: ".201519E.2015192E2"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.text.DigitList.getDouble(DigitList.java:169)
at java.text.DecimalFormat.parse(DecimalFormat.java:2056)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1869)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
at java.text.DateFormat.parse(DateFormat.java:364)
at com.nonscalper.webscraper.processor.av.ExampleClass.workConcurrently(ExampleClass.java:37)
at com.nonscalper.webscraper.processor.av.ExampleClass$1.run(ExampleClass.java:25)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

解決方案

  1. 每次 new (實(shí)例化) SimpleDateFormat

  2. 利用 ThreadLocal 確保每個(gè)線程都可以得到單獨(dú)的一個(gè) SimpleDateFormat。

public class DateUtil {
	private static final ThreadLocal<SimpleDateFormat> local = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

	public static String format(Date date) {
		return local.get().format(date);
	}

	public static Date parse(String dateStr) throws ParseException {
		return local.get().parse(dateStr);
	}
}
  1. commons-lang3 中的 FastDateFormat

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>${commons-lang3-version}</version>
</dependency>

性能比拼

性能咋樣,jmh 來一把,源碼見:https://github.com/lets-mica/mica-jmh

# JMH version: 1.21
# VM version: JDK 1.8.0_221, Java HotSpot(TM) 64-Bit Server VM, 25.221-b11

Benchmark             Mode  Cnt       Score       Error  Units
newSimpleDateFormat  thrpt    5  114072.841 ±   989.135  ops/s
threadLocal          thrpt    5  348207.331 ± 46014.175  ops/s
fastDateFormat       thrpt    5  434391.553 ±  7799.593  ops/s

結(jié)果:fastDateFormat 得分最高。當(dāng)然你覺得這樣就完了?

利用 Instant + DateTimeFormatter

mica 1.2.1 中我們利用 Instant 來中轉(zhuǎn) Date 使用 DateTimeFormatter 格式化。

public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());

public String format(Date date) {
	return DATETIME_FORMATTER.format(date.toInstant());
}

注意:DateTimeFormatter 格式化 Instant 需要指定時(shí)區(qū)。

jdk 8 壓測(cè)結(jié)果

# JMH version: 1.21
# VM version: JDK 1.8.0_221, Java HotSpot(TM) 64-Bit Server VM, 25.221-b11

Benchmark         Mode  Cnt       Score      Error  Units
fastDateFormat   thrpt    5  417338.980  56543.104  ops/s
toInstantFormat  thrpt    5  371028.709  72059.917  ops/s

jdk 11 壓測(cè)結(jié)果

# JMH version: 1.21
# VM version: JDK 11.0.4, OpenJDK 64-Bit Server VM, 11.0.4+10-b304.69

Benchmark         Mode  Cnt       Score      Error  Units
fastDateFormat   thrpt    5  384637.138   7402.690  ops/s
toInstantFormat  thrpt    5  487482.436  12490.986  ops/s

感謝各位的閱讀,以上就是“如何使用java8的格式化Date”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何使用java8的格式化Date這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站題目:如何使用java8的格式化Date
標(biāo)題路徑:http://aaarwkj.com/article24/gpigje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、網(wǎng)頁設(shè)計(jì)公司、搜索引擎優(yōu)化響應(yīng)式網(wǎng)站、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
少妇视频资源一区二区三区| 国产一区二区三区婷婷| 日韩黄色一级片在线观看| 国产三级精品久久三级国专区| 久久久精品人妻免费网站| 成年人免费在线观看国产| 中文字幕国产成人在线视频| 最近最新免费成人在线视频| 本色啪啪人妻夜嗨嗨av| 东京热男人的av天堂| 欧美日韩国产另类在线视频| 国产一区二区在线乱码| 日本av东京热在线播放| 午夜毛片免费在线播放| 在线国产精品中文字幕 | 禁止18岁以下观看的视频| 国产污视频网站在线观看| 国产三级三级三级av精品| 久久精品国产亚洲熟女| 国产精品美女自拍视频| 中文字幕人妻丝乱一区三区| 亚洲区一区二区三区精品| 日本束缚人妻一区二区三区| 久久精品国产亚洲av麻豆网站| 99在线视频午夜福利| 中文字幕韩国三级电影| 亚洲三级成人一区在线| 中文字幕精品人妻在线| 日韩伦理高清在线观看| 中文字幕中出亚洲精品| av永久天堂一区二区三区| 性感91美女白丝在线精品| 亚洲av一本岛在线播放| 亚洲美女国产精选999| 麻豆映画传媒在线播放| 中文字幕一区侵犯人妻| 极品人妻少妇精品一区二区| 国产三级亚洲三级在线理论| 欧美一区二区日韩国产| 国产精品—色哟哟视频| 色哟哟视频免费在线观看|