sdf

《java多线程编程核心技术》----simpleDateFormat非线程安全

為{幸葍}努か 提交于 2019-11-27 00:18:07
类simpleDateFormat主要负责日期的转换和格式化,但在多线程的环境中,使用此内容容易造成数据转换以及处理的不准确, 因为simpleDateFormat类并不是线程安全的。 public class MyThread extends Thread { private SimpleDateFormat sdf; private String dateString; public MyThread(SimpleDateFormat sdf, String dateString) { super(); this.sdf = sdf; this.dateString = dateString; } @Override public void run() { try { // dateString 传入的日期字符串 Date dateRef = sdf.parse(dateString); // newDateString 根据传入的字符串转换成日期,然后,在转换后的字符串 String newDateString= sdf.format(dateRef).toString(); if(!newDateString.equals(dateString)){ System.out.println("ThreadName="+this.getName() +"报错了 日期字符串:"

有关日期的集合排序

心已入冬 提交于 2019-11-26 19:27:10
借助Collections工具类,实现按照日期进行排序 1、日期集合排序 2、包含日期字段类的集合按照日期字段排序 public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String a = "2019-08-01 08:00:00"; String b = "2019-08-01 18:00:00"; String c = "2019-08-01 15:00:00"; Date d1 = sdf.parse(a); Date d2 = sdf.parse(b); Date d3 = sdf.parse(c); List<Date> list = new ArrayList<>(); list.add(d1); list.add(d2); list.add(d3); Collections.sort(list, new Comparator<Date>() { @Override public int compare(Date o1, Date o2) { return o1.compareTo(o2); } }); System.out.println(list);

Java 多线程,线程局部变量。

假装没事ソ 提交于 2019-11-26 12:46:56
1. 静态变量 public staitc final SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");   1.1如果两个线程都执行:     String str = sdf.format(new Date());     此时sdf的内部数据结构可能会被并发访问破坏。     线程内局部变量:       public staitc final ThreadLocal<SimpleDateFormat> sdf = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));     使用:     String str = sdf.get().format(new Date()); 2.java,util,Random 生成随机数也最好用上面的方法,否则两个线程等待一个共享随机数生成器,效率很低。   java7后支持一下方法:     int random = ThreadLocalRandom.current().nextInt(upperBound); 来源: https://www.cnblogs.com/lovleo/p/11320653.html