synchronized关键字:
类锁,对象锁,同步代码块
https://blog.csdn.net/cs408/article/details/48930803#commentBox
synchronized monitorEneter,可重入;对象头
https://blog.csdn.net/u011277123/article/details/85061655
https://juejin.im/post/5ae6dc04f265da0ba351d3ff#heading-4
搞懂并发编程,轻松应对80%的面试场景
https://www.toutiao.com/i6631353575584825870/?group_id=6631353575584825870

死锁

解决死锁的手段

保证多个线程按照相同的顺序获取锁
设置获取锁的超时时间,超过设定时间以后自动释放
死锁检测
资源限制

「阿里面试系列」Java线程的应用及挑战
原子性,有序性,可见性 https://www.jianshu.com/p/cf57726e77f2
面试官最爱的volatile关键字:https://juejin.im/post/5a2b53b7f265da432a7b821c
在这里插入图片描述
主要是禁止重排序,初始化一个实例(SomeType st = new SomeType())在java字节码中会有4个步骤,申请内存空间,初始化默认值(区别于构造器方法的初始化),执行构造器方法连接引用和实例。这4个步骤后两个有可能会重排序,1234 1243都有可能,造成未初始化完全的对象发布。volatile可以禁止指令重排序,从而避免这个问题

作者:陈鹏
链接:https://www.zhihu.com/question/56606703/answer/149894860
Java 并发:Lock 框架详解

https://blog.csdn.net/justloveyou_/article/details/54972105#commentBox

不可不说的Java“锁”事
https://tech.meituan.com/2018/11/15/java-lock.html

vector:

Vector和ArrayList的最大不同是Vector是线程安全的而ArrayList不是。
Vector几乎所有的方法都使用synchronized关键字是来保证线程安全使它的性能比不上ArrayList。 

Vector和ArrayList不同还体现在动态增长的策略上。ArrayList的基本增长策略是oldCapacity1.5+1,如果还不够则容量为实际需要容量;Vector的基本增长策略是oldCapacity+设定好的增长幅度,如果没设定则新容量增长为oldCapacity2,如果还不够则为实际需要的容量。
  collections:
https://blog.csdn.net/u011240877/article/details/52773577#commentBox
ConcurrentHashMap源码分析(JDK8版本)
https://blog.csdn.net/u010723709/article/details/48007881#commentBox

hashmap源码分析:
Java 集合深入理解(16):HashMap 主要特点和关键方法源码解读
https://blog.csdn.net/u011240877/article/details/53351188#commentBox
hashmap线程不安全:
https://www.jianshu.com/p/e2f75c8cce01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值