第十五天

本文详细介绍了Map接口的工作原理,包括键值对操作、无序特性以及HashMap的底层实现。此外,对比了run()和start()在线程中的作用,讨论了如何正确使用它们实现多线程。还涵盖了线程状态及其控制的相关知识。
摘要由CSDN通过智能技术生成

Map接口

1.Map可以根据键来提取对应的值
2.Map的键不允许重复,如果重复,对应的值会被覆盖
3.Map存放的都是无序的数据
4.Map的初始容量是16,默认的加载因子是0.75

HashMap

HashMap底层是一个Entry[ ]数组

1.HashSet中元素没有顺序,且不允许重复
2.HashSet允许存null值,但也不允许重复

1.Map中存放的都是无序的数据
Map中的key不可以重复,如果重复,此key对应的Value会被覆盖
2.Map中的数据要符合映射规则,一定要注意同时制定K 和V 的数据类型,至于这个K和V要制定成什么类型的数据,取决于具体需求

对map集合进行遍历/迭代

方式一
* 遍历map中的数据,但是map本身没有迭代器,需要转换成set集合
Set :把集合中的所有Key存到set集合中 keySet()

方式二
* 遍历map数据,把map转成set集合,是把map中的一堆Key Value作为一个Entry整体放入Set
一对K V 是一个Entry

线程

①当我们调用start()启动线程时,虚拟机会自动调用run()的业务
②测试结果
线程有随机性。执行的结果是不可控的,因为这是CPU在调度的我们无法控制
③父类实现是我们不需要的,我们有自己的业务

如果只是调用两个线程的run(),那么会先执行完一个线程,在执行理你另一个线程,不会有多线程抢占资源的效果,所以我们真的能通过run()来执行多线程任务吗?
* run()与start()本质上的区别,run()只能当做一个顺序执行的单线程普通方法,并没有多线程抢占的效果,所以如果想以多线程的效果干活,必须调用start(),才能真正的启动线程

线程的五态

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值