> 文章列表 > 20230320学习笔记

20230320学习笔记

20230320学习笔记

目录

一、HashMap的put方法

二、重载和重写的区别

三、ReenTrantLock中tryLock()和Lock()方法的区别

四、sleep、wait、join、yield

五、ThreadLocal的底层原理

六、TheadLocal内存泄漏问题,如何避免

七、如何查看线程死锁

八、说一下ThreadLocal

九、线程之间是如何通讯

总结



一、HashMap的put方法

1、首先通过hashcode 与或运算,确定下标位置。

2、1.7: a、没值的情况下,创建Entry对象

            b、有值的情况下,如何key相同,把value覆盖。

            c、key不相同,若要扩容,则先扩容,再使用头插法插入Entry对象;

      1.8: a、 没值的情况下,创建Node对象;

             b、有值的情况下,若key相同,则覆盖value;

             c、key不相同,使用尾插法添加Node对象,遍历元素后,再确认是否需要扩容。            

二、重载和重写的区别

1、重写: 实现父类的方法,访问权限大于父类,返回值、异常类型小于父类,private 权限不能被 重写。

2、重载:方法名相同,参数列表不同、参数个数,参数类型,与返回值无关。

三、ReenTrantLock中tryLock()和Lock()方法的区别

  

四、sleep、wait、join、yield

sleep:睡眠,线程运行状态转变成可运行状态;

wait: 阻塞,等待唤醒,notify,notifyAll;

join: 唤醒主线程;

yield: 可中断;

五、ThreadLocal的底层原理

1、每个Thead对象有TheadLocalMap属性,它是ThreaLocal的内部类;

2、key值是本身且是弱引用对象。

六、TheadLocal内存泄漏问题,如何避免

1、确认完成后,有remove();

七、如何查看线程死锁

jstat

八、说一下ThreadLocal

九、线程之间是如何通讯



总结