非常详细的并发教程
https://www.bilibili.com/video/BV1L4411i7eW?from=search&seid=13574437386583870914
https://www.bilibili.com/video/BV1xK4y1C7aT?from=search&seid=14980012989480329876
https://blog.youkuaiyun.com/defonds/article/details/44021605?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
*一个程序至少2个线程,main线程,垃圾回收线程(jvm创建的线程)
创建线程方式一:
安全实现优先考虑大方向的:
从请求开始:采用队列、redis这些的对应锁机制
到了代码:再考虑异步线程、线程池、加锁这些
最后再考虑:变量修饰词、类型选择
如果前面的策略就达到了安全,底层就不用再做安全牺牲效率了
集合元素少的原因:有可能2个线程 同时操作list.add(),把元素加在同一个位置上了