Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

java并发规范(线程及锁) PDF 下载


分享到:
时间:2020-07-26 11:28来源:http://www.java1234.com 作者:小锋  侵权举报
java并发规范(线程及锁) PDF 下载
失效链接处理
java并发规范(线程及锁) PDF 下载

本站整理下载:
提取码:z1s5 
 
 
相关截图:
 
主要内容:

Rule 1. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯
Rule 2. 【推荐】尽量使用线程池来创建线程
Rule 3. 【强制】线程池不允许使用 Executors去创建,避资源耗尽风险,推荐用ThreadPoolExecutor创建线程池
Rule 4. 【强制】正确停止线程
Rule 5. 【强制】编写可停止的Runnable
5.1 正确处理InterruptException
5.2 主循环及进入阻塞状态前要判断线程状态
Rule 6. 【强制】Runnable中必须捕获一切异常
Rule 7. 【强制】全局的非线程安全的对象可考虑使用ThreadLocal存放
Rule 8. 【推荐】缩短锁
8.1 能锁区块,就不要锁整个方法体;
8.2 能用对象锁,就不要用类锁。
Rule 9. 【推荐】选择分离锁,分散锁甚至无锁的数据结构
Rule 10. 【推荐】基于ThreadLocal来避免锁
Rule 11. 【推荐】规避死锁风险
Rule 12. 【推荐】volatile修饰符,AtomicXX系列的正确使用
Rule 13. 【推荐】延时初始化的正确写法
 
Rule 1. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯
(1)创建单条线程时直接指定线程名称
    Thread t = new Thread();
    t.setName("cleanup-thread");
 
(2) 线程池则使用guava或自行封装的ThreadFactory,指定命名规则。
ThreadFactory threadFactory = new ThreadFactoryBuilder().
setNameFormat(threadNamePrefix + “-%d”).build();
ThreadPoolExecutor executor = new ThreadPoolExecutor(…, threadFactory, …);
 
Rule 2. 【推荐】尽量使用线程池来创建线程
除特殊情况,尽量不要自行创建线程,更好的保护线程资源。
同理,定时器也不要使用Timer,而应该使用ScheduledExecutorService。
因为Timer只有单线程,不能并发的执行多个在其中定义的任务,而且如果其中一个任务抛出异常,整个Timer也会挂掉,而ScheduledExecutorService只有那个没捕获到异常的任务不再定时执行,其他任务不受影响。
Rule 3. 【强制】线程池不允许使用 Executors去创建,避资源耗尽风险
Executors返回的线程池对象的弊端 :

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐