首页 > 编程语言 > 详细

[技术分享]20180109_多线程_ ThreadLocal解决线程安全问题(jdk 1.7)

时间:2018-01-09 22:40:52      阅读:362      评论:0      收藏:0      [点我收藏+]

下面存在一个线程安全问题:

public class TestSimpleDateFormat {
    
    public static void main(String[] args) throws InterruptedException, ExecutionException {
     //SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd"); //java 8可用
        Callable<LocalDate> task = new Callable<LocalDate>() {

            @Override
            public LocalDate call() throws Exception {
                return LocalDate.parse("20180109", dtf); //java 8可用
         //return DateFormatThreadLocal.convert("20180109");
            }
            
        };
        
        List<Future<LocalDate>> list = new ArrayList<>();
        
        ExecutorService pool = Executors.newFixedThreadPool(10);
        
        for(int i=0;i<10;i++){
            list.add(pool.submit(task));
        }
        
        for(Future<LocalDate> future:list){
            System.out.println(future.get());
        }
        
        pool.shutdown();//记得关闭
    }
    
}

 

 

下面是threadLocal类:

public class DateFormatThreadLocal {
    
    private static final ThreadLocal<DateFormat> tl = new ThreadLocal<DateFormat>(){
        
        protected DateFormat initialValue() {
            return new SimpleDateFormat("yyyyMMdd");
        }
        
    };
    
    public static final Date convert(String source) throws ParseException{
        return tl.get().parse(source);
    }
}

 

[技术分享]20180109_多线程_ ThreadLocal解决线程安全问题(jdk 1.7)

原文:https://www.cnblogs.com/dingzheng/p/8253946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!