SimpleDateFormat非线程安全测试

9人阅读 评论(0) 收藏 举报
分类:
package gulixueyuan_jdk18;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import org.junit.Test;

public class TestSimpleDateFormat {
	
	@Test
	public void test1() throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		System.out.println(sdf.parse("20180415"));
	}
	
	
	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		Callable<Date> task = new Callable<Date>() {
			
			@Override
			public Date call() throws Exception {
				return sdf.parse("20180415");
			}
		};
		
		ExecutorService pool = Executors.newFixedThreadPool(10);
		
		List<Future<Date>> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			list.add(pool.submit(task));
		}
		
		list.forEach(e -> {
			try {
				System.out.println(e.get());
			} catch (InterruptedException | ExecutionException e1) {
				e1.printStackTrace();
			}
		});
		
	}
}

如何使用jdk1.8保证线程安全:

//		 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
		Callable<LocalDate> task = new Callable<LocalDate>() {

			@Override
			public LocalDate call() throws Exception {
				return LocalDate.parse("20180415", dtf);
			}
		};

		ExecutorService pool = Executors.newFixedThreadPool(10);

		List<Future<LocalDate>> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			list.add(pool.submit(task));
		}

		list.forEach(e -> {
			try {
				System.out.println(e.get());
			} catch (InterruptedException | ExecutionException e1) {
				e1.printStackTrace();
			}
		});

		pool.shutdown();



查看评论

python线程进程、异步IO

-
  • 1970年01月01日 08:00

非线程安全类SimpleDateFormat的禁忌

关于SimpleDateFormat的用法其实很简单,或许这个标题你会不以为然,下面通过例子来说明一个现象 SimpleDateFormat是非线程安全的...
  • qwfylwc
  • qwfylwc
  • 2016-12-30 16:38:53
  • 293

JAVA i++线程非安全测试1

i++ 线程非安全分析
  • whzhaochao
  • whzhaochao
  • 2015-11-01 18:20:38
  • 922

SimpleDateFormat线程不安全及解决办法

一. 为什么SimpleDateFormat不是线程安全的? Java源码如下:
  • zdp072
  • zdp072
  • 2014-11-12 15:47:34
  • 8510

关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调...
  • zxh87
  • zxh87
  • 2014-02-18 16:19:40
  • 24183

解决SimpleDateFormat的线程不安全问题的方法:ThreadLocal

http://bijian1013.iteye.com/blog/1873336 http://blog.csdn.net/vking_wang/article/details/14225379
  • litefish
  • litefish
  • 2015-05-28 11:40:51
  • 1559

SimpleDateFormat 的线程安全问题与解决方案

SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 但是 SimpleDa...
  • zq602316498
  • zq602316498
  • 2014-10-19 17:23:28
  • 5489

SimpleDateFormat 解决非线程安全

SimpleDateFormat类的继承关系: java.text  Class SimpleDateFormat java.lang.Object  |    +---...
  • java_caixs
  • java_caixs
  • 2014-02-14 15:45:06
  • 859

SimpleDateFormat线程安全问题解决方案

1.问题。    作为一个准毕业生,在平时的练习中鲜有遇见多线程的练习,所以从来没有意识到SimpleDateFormat还会有线程安全问题。前几天看了Leader分享的几篇博文后,对这个问题有了一...
  • qq_22866497
  • qq_22866497
  • 2017-04-07 20:14:19
  • 234

SimpleDateFormat 线程非安全

这段时间一直在做微博爬虫这块的开发,做这块必用就是多线程。       其中有一功能模块就是抽取微言的时间模块,如date="2012/10/30 11:30:30",每次用SimeDateForm...
  • erliang20088
  • erliang20088
  • 2015-05-17 16:34:37
  • 279
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 1401
    排名: 3万+
    最新评论