SimpleDateFormat是Java中非常常见的一个类,用来解析和格式化日期字符串.但是SimpleDateFormat在多线程的环境并不是安全的,这个是很容易犯错的部分,接下来讲一下这个问题出现的过程以及解决的思路. 问题描述:先看代码,用来获取一个月的天数的: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil { /** *…
在JDK中使用SimpleDateFormat的时候都会遇到线程安全的问题,在JDK文档中也说明了该类是线程非安全的,建议对于每个线程都创建一个SimpleDateFormat对象.如下面一个Case中,多个线程去调用SimpleDateFormat中得parse方法: @Test public void testUnThreadSafe() throws Exception { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM…
在开发过程中 当我们拿到一个线程非安全的java类的时候,我们可以额外创建这个类的管理类 并在管理类中控制同步 比如 一个非线程安全的Pair类 package test.thread.sx.testKuai; /** * 线程非安全的java类 * 约束条件 两个变量的值必须一致 * @author Administrator * */ public class Pair { private int x,y; public Pair(int x,int y){ this.x = x; this…
 1.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08 import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Date dat…
 1.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08 import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Date dat…
8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Integer a=127; Integer b=127;//虚拟机自动装箱时进行了特殊处理,-127~128以下的自动取有过的 System.out.println(a==b);结果为true 如果是Integer a=128; Integer b=128; Sys…
笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年至今的时间的毫秒数, 运行两次即可用于统计时间间隔! * 2.Date() 类:java.util.Date : toString()/getTime()--返回long型64位整数 ; * 以及他的子类java.sql.Date * 3.SimpleDateFormat 类:(国际化) * 格式化…
SessionFactory负责创建session,SessionFactory是线程安全的,多个并发线程可以同时访问一个 SessionFactory 并从中获取Session实例. (SessionFactory源码大部分是final修饰的) 而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,则将会导致 Session 数据存取逻辑混乱.因此创建的Session实例必须在本地存取空上运行,使之总与当前的线程相关.这里就需要用到ThreadLoca…
iOS多线程初体验是本文要介绍的内容,iPhone中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB.并且该值不能通过编译器开关或线程API函数来更改.只有主线程有直接修改UI的能力. 一. NSOperation和NSOperationQueue 1.一个继承自  NSOperation的操作类,该类的实现中必须有 - (void)main方法的. 2.使用NSOperation的最简单方法就是将其放入NSOperation…
最近工作不是太忙,准备再读读一些源码,想来想去,还是先从JDK的源码读起吧,毕竟很久不去读了,很多东西都生疏了.当然,还是先从炙手可热的HashMap,每次读都会有一些收获.当然,JDK8对HashMap有一次优化. 一.一些参数 我们首先看到的,应该是它的一些基本参数,这对于我们了解HashMap有一定的作用.他们分别是: 参数 说明 capacity 容量,默认为16,最大为2^30 loadFactor 加载因子,默认0.75 threshold resize的阈值,capacity *…