您好,欢迎来到尚佳旅游分享网。
搜索
您的当前位置:首页Flink程序SimpleDateFormat线程不安全

Flink程序SimpleDateFormat线程不安全

来源:尚佳旅游分享网

SimpleDateFormat 线程不安全,使用 joda-time 实现的DateTime工具类

参考链接:https:///lingeio/article/details/107307924

1.原因

private val sdf1: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
private val sdf2: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
private val sdf3: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm")
val currentTime = sdf1.format(new Date)
val minuteTimestamp = (sdf2.parse(currentTime).getTime/1000).toString

2.异常:

java.lang.NumberFormatException: For input string: ".22022220022222E4.3E1.3E1"
	at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) ~[?:1.8.0_151]
	at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[?:1.8.0_151]
	at java.lang.Double.parseDouble(Double.java:538) ~[?:1.8.0_151]
	at java.text.DigitList.getDouble(DigitList.java:169) ~[?:1.8.0_151]
	at java.text.DecimalFormat.parse(DecimalFormat.java:2056) ~[?:1.8.0_151]
	at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1869) ~[?:1.8.0_151]
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514) ~[?:1.8.0_151]
	at java.text.DateFormat.parse(DateFormat.java:3) ~[?:1.8.0_151]
	at com.leadeon.service.login_realtime.LoginAnalysis$$anonfun$3.apply(LoginAnalysis.scala:109) ~[LD_Spark_ETL-assembly-2.01.jar:2.01]
	at com.leadeon.service.login_realtime.LoginAnalysis$$anonfun$3.apply(LoginAnalysis.scala:) ~[LD_Spark_ETL-assembly-2.01.jar:2.01]

java.lang.NumberFormatException: For input string: "49."
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_151]
	at java.lang.Long.parseLong(Long.java:5) ~[?:1.8.0_151]
	at java.lang.Long.parseLong(Long.java:631) ~[?:1.8.0_151]
	at java.text.DigitList.getLong(DigitList.java:195) ~[?:1.8.0_151]
	at java.text.DecimalFormat.parse(DecimalFormat.java:2051) ~[?:1.8.0_151]
	at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2162) ~[?:1.8.0_151]
	at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514) ~[?:1.8.0_151]
	at java.text.DateFormat.parse(DateFormat.java:3) ~[?:1.8.0_151]
	at com.leadeon.service.login_realtime.LoginAnalysis$$anonfun$3.apply(LoginAnalysis.scala:109) ~[LD_Spark_ETL-assembly-2.01.jar:2.01]
	at com.leadeon.service.login_realtime.LoginAnalysis$$anonfun$3.apply(LoginAnalysis.scala:) ~[LD_Spark_ETL-assembly-2.01.jar:2.01]

3.解决方法:

val dtf1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS")
val dtf2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
val dtf3 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm")
val date = new Date()
val currentTime= new DateTime(date).toString(dtf1)
val minutes = new DateTime(date).toString(dtf3)
val timestamp = dtf1.parseDateTime(currentTime).getMillis

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- shangjiatang.cn 版权所有 湘ICP备2022005869号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务