阿里java编码规范记录

1.【强制】线程池资源必须通过线程池提供,不允许在应用中显示创建线程

说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间及系统资源,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。

2【强制】线程池不允许使用Executors创建,而是通过ThreadPoolExecutor的方式创建,这样的处理方式能让编写代码的工程师更加明确线程池的运行规则,规避资源耗尽的风险。

说明:Executors返回的线程池对象的弊端如下:
    1.FixedThreadPool和SingleThreadPool:允许请求的队列长度为Integer.MAX_VALUE,可能会堆积大量的请求而导致OOM。
    2.CachedThreadPool和ScheduledThreadPool:允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量线程而导致OOM

3.【强制】SimpleDateFormate是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁或者使用DateUtils工具类

说明:如果是jdk8的应用,可以用instant代替Date,LocalDateTime代替Calendar,DateTimeFormatter代替SimpleDateFormat

.

猜你喜欢

转载自www.cnblogs.com/luohero/p/9896593.html