2017年2月10日

SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static ,必须加锁,或者使用 DateUtils 工具类

摘要: SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为static ,必须加锁,或者使用 DateUtils 工具类。正例:注意线程安全,使用 DateUtils 。亦推荐如下处理:private static final ThreadLocal<Date 阅读全文

posted @ 2017-02-10 18:10 amos-s 阅读(819) 评论(0) 推荐(0)

线程池不使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式

摘要: 线程池不使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明: Executors 返回的线程池对象的弊端如下:1) FixedThreadPool 和 SingleThreadPool 阅读全文

posted @ 2017-02-10 18:07 amos-s 阅读(420) 评论(0) 推荐(0)

线程资源最好通过线程池提供

摘要: 线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。 阅读全文

posted @ 2017-02-10 18:01 amos-s 阅读(638) 评论(0) 推荐(0)

获取单例对象需要保证线程安全,其中的方法也要保证线程安全

摘要: 获取单例对象需要保证线程安全,其中的方法也要保证线程安全。说明:资源驱动类、工具类、单例工厂类都需要注意。 阅读全文

posted @ 2017-02-10 18:00 amos-s 阅读(915) 评论(0) 推荐(0)

高度注意 Map 类集合 K / V 能不能存储 null 值的情况,如下表格

摘要: 集合类 Key Value Super 说明 Hashtable 不允许为 null 不允许为 null Dictionary 线程安全ConcurrentHashMap 不允许为 null 不允许为 null AbstractMap 分段锁技术TreeMap 不允许为 null 允许为 null 阅读全文

posted @ 2017-02-10 17:58 amos-s 阅读(306) 评论(0) 推荐(0)

使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历的好处

摘要: 使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历。说明: keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出key 所对应的 value 。而 entrySet 只是遍历了一次就把 key 和 value 阅读全文

posted @ 2017-02-10 17:53 amos-s 阅读(791) 评论(0) 推荐(0)

在 JDK 7 版本以上, Comparator 要满足自反性,传递性,对称性

摘要: 在 JDK 7 版本以上, Comparator 要满足自反性,传递性,对称性,不然 Arrays . sort ,Collections . sort 会报 IllegalArgumentException 异常。说明:1 ) 自反性: x , y 的比较结果和 y , x 的比较结果相反。2 ) 阅读全文

posted @ 2017-02-10 17:50 amos-s 阅读(1809) 评论(0) 推荐(0)

不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。

摘要: 反例:List<String> a = new ArrayList<String>();a.add("1");a.add("2");for (String temp : a) {if("1".equals(temp)){a.remove(temp);}}说明:以上代码的执行结果肯定会出乎大家的意料, 阅读全文

posted @ 2017-02-10 17:46 amos-s 阅读(348) 评论(0) 推荐(0)

类成员与方法访问控制从严

摘要: 1 ) 如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private 。2 ) 工具类不允许有 public 或 default 构造方法。3 ) 类非 static 成员变量并且与子类共享,必须是 protected 。4 ) 类非 static 成员变量并且仅在本类使用,必须是 阅读全文

posted @ 2017-02-10 17:29 amos-s 阅读(306) 评论(0) 推荐(0)

慎用 Object 的 clone 方法来拷贝对象

摘要: 对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象的拷贝。 阅读全文

posted @ 2017-02-10 17:26 amos-s 阅读(233) 评论(0) 推荐(0)

导航