多线程下 SimpleDateFormat

package com.shob.tt.single;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringUtil {

	/**
	 * SimpleDateFormat在多线程环境下容易造成数据转换及处理数据的不准确
	 * 处理方式:创建多个SimpleDateFormat
	 * @param formatPattern
	 * @param dateString
	 * @return
	 * @throws ParseException
	 */
	public static Date parse(String formatPattern,String dateString) throws ParseException{
		return new SimpleDateFormat(formatPattern).parse(dateString);
	}

	public static String format(String formatPattern,Date date) throws ParseException{
		return new SimpleDateFormat(formatPattern).format(date);
	}

	private static ThreadLocal<SimpleDateFormat> tl = new ThreadLocal<SimpleDateFormat>();
	/**
	 * ThreadLocal 类能使线程绑定到指定对象
	 * @param formatPattern
	 * @return
	 */
	public static SimpleDateFormat getSimpleDateFormat(String formatPattern){
		SimpleDateFormat sdf = null;
		sdf = tl.get();
		if(null == sdf){
			sdf = new SimpleDateFormat(formatPattern);
			tl.set(sdf);
		}
		return sdf;
	}
}

  

时间: 2024-11-05 15:54:48

多线程下 SimpleDateFormat的相关文章

Java多线程21:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier.CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作.看一下CyclicBarrier的使用实例: public static class CyclicBarrierThread extends Thread { private CyclicBarrier cb; private int sleep

Window下高性能IOCP模型队列多线程下应用

IOCP,先从概念上认识一下.IOCP全称I/O Completion Port,中文译为I/O完成端口.是Windows平台最高效的I/O模块,现在IIS服务器,就采用IOCP模型.IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序.与使用select()或是其它异步方法不同的是,现在很多书,文字都直接将IOCP模块和网络编程关联起来,好像IOCP就是和网络打交道的.典型的IOCP模型的使用,是 将一个套接字(socket)与一个完成端口关联了起来,当一个网络事件发生的时

hashmap,hashtable,concurrenthashmap多线程下的比较(持续更新)

1.hashMap 多线程下put会造成死循环,主要是扩容时transfer方法会造成死循环. http://blog.csdn.net/zhuqiuhui/article/details/51849692(具体原因) 2.hashTable,使用synchornized保证线程安全,线程竞争竞争激烈的情况下,效率低下.当一下线程访问hashTable方法的时候,其他的线程会进入轮询或者阻塞的情况. 如果线程1是用put方法添加元素,线程2不能put元素也不能get元素,所以竞争越激烈越低. 3

HashMap简单源码及多线程下的死循环

主要记录hashMap的一些基本操作源码实现原理以及多线程情况下get()操作的死循环引发原因 一.hashMap简介 1.hashMap集合的主要属性及方法 (默认初始化容量)DEFAULT_INITIAL_CAPACITY = 16 (默认最大容量)MAXIMUM_CAPACITY = 1 << 30 (默认加载因子)DEFAULT_LOAD_FACTOR = 0.75f (Entry数组)Entry[] table (Entry实例的数量)size put(K key, V value)

HashMap为什么在多线程下会让cpu100%

首先HashMap并不是sun公司多线程提供的集合,很多时候我们的程序是一个主线程,用了hashmap并没有什么问题,但是在多线程下会出现问题. hashmap是一个哈希表,存储的数据结构也可以是一个线性数组,我们的存储的数据都在entry里,默认的大小是16, 因子是0.75  当达到16*0.75的时候就会扩充 把原来的数据transfer在新的扩充的容器里,在转换的时候如果是一个线程并没有什么问题,但是在多线程的时候,如果在临界点的时候,如果存储的值得hash值对数组的长度去摸一样,就会存

转发 FMDB多线程下&quot;is currently in use&quot; 或者 &quot;database is locked&quot; 问题

FMDB多线程下"is currently in use" 或者 "database is locked" 问题 问题一: "is currently in use" 出现的场景是这样的,多线程操作数据库,每个线程都使用了FMDatabase实例(注意没有使用FMDatabaseQueue). 问题二:“database is locked"出现的场景是这样的,多线程操作数据库,每个线程各自创建了FMDatabaseQueue实例操作数

多线程下HashMap与Hashtable

最近在多线程环境下操作HashMap,在程序中执行最多的是“查询”,但同时也要维护数据的“添加”和“删除” 早在开发前就知道Hashtable是同步的,而HashMap是异步的. 好吧在这里承认错误:限于没有犯过这个错误也没有见过实例场景,开发前未做好评估 现在说说我的这次需求吧: 1.要求新增一个功能页面,点击功能按钮弹出页面 2.页面前后台校验器两个(在这里不做追述) 3.提交修改后,提交按钮并disabled该按钮,页面特定区域显示动态Loading图标,并要求不影响主功能进程,若关闭弹出

多线程下的单例模式

参加一个面试,被问到多线程下的单例模式会创建几个对象,总结一下: 首先我的单例是这么写的(懒汉式) public class Singleton{ private static Singleton singleton; private Singleton(){} public Singleton getInstance(){ if(singleton == null){ singleton = new singleton(); } return singleton; } } 这样写的话, 当线程

java多线程下如何调用一个共同的内存单元(调用同一个对象)

1 /* 2 * 关于线程下共享相同的内存单元(包括代码与数据) 3 * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. 4 * 对于Thread(Runnable target)构造方法创建的线程,轮到它来享用CPU资源时. 5 * 目标对象就会自动调用接口中的run()方法 6 * */ 7 8 /* ----------------举例子------------------- */ 9 10 /* 11 * 使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶