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();

七、如何查看线程死锁

jstack pid;

show engine innodb status;

八、说一下ThreadLocal

1、基于线程本地存储的机制;

2、Thread的变量ThreadLocalMap,是ThreadLocal的静态内部类,entry 是采用弱引用,当key是个弱引用指向的是本身,当本身被回收,key如果作为强引用,就没办法被回收;

3、使用完成后要remove();

4、

九、线程之间是如何通讯

多线程的通讯都是基于内存共存(wait,notify),网络。



总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值