HashMap 以及多线程基本感念
接口 Map :映射项,(键值对 ) 的容器
注意: 键 是唯一的
值 是可以重复的
实现类 HashMap :哈希表结构 允许使用null值 和 null 键 线程不安全 键唯一 无序
linkedHashMap: 保证插入顺序 和迭代顺序一致
Hashtable:数据结构:哈希表 不允许使用nullnull值 和 null 键,线程安全
pronerties 持久属性集,键和值都是字符串 可保存在流中和从流中加载
TreeMap:数据结构 :红黑树;排序
HashMap 初始容量 16,扩容时机就是加载因子控制,初始加载因子0.75
初始容量加载因子 开始扩容
增:
1. V put(K key, V value)
将指定的值与此映射中的指定键关联(可选操作)。
2.void putAll(Map<? extends K,? extends V> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。
删除:
1. void clear() 删除
从此映射中移除所有映射关系(可选操作)。
2. V remove(Object key) 根据键 来删出一个映射关系
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
改
查
1. int size() :Map中映射项的个数
返回指定键所映射的值;如果Map中没有元素,则返回 null。
2. int hashCode()
返回此映射的哈希码值。
3.Set<K> keySet() 将键 存入 Set中 然后将set结合返回
返回此映射中包含的键的 Set 视图。
4. Collection<V> values()
返回此映
3. Set<Map.Entry<K,V>> entrySet():将所有的硬设项,作为元素存入set集合中,再将set集合返回
判断
1.boolean isEmpty() :是否为空
2. boolean equals(Object o)
比较指定的对象与此映射是否相等。
3.boolean containsKey(Object key) :是否包含键
4.boolean containsValue(Object value):是否包含值
5.V get(Object key) 根据键 获取值
(先继承 再实现)
Arrays 数组
Collections 集合
1.static int binarySearch (int[] a, int key) 二分法查找 :升序
多线程基础
1.程序 (Program) 是一个静态的概念 , 一般对应与操作系统中的一个可执行的文件
2.执行中的程序叫做 进程 Process 是一个动态的概念, 其实进程就是一个内存中独立运行的 程序空间
3.LInux 是服务器 Windows : ”多任务“的操作系统 操作系统可以同时运行多个任务
4.时间片轮转调度算法
单核的话 你们这些软件 只能运行5毫秒 然后下一个 进行线程切换
5.线程 进程的分支 我们称为线程
总结 1 .程序 没有开始运行的代码
2进程 开始执行的程序
3.多线程 Thread 一个程序内部 需要做多任务
一条生产线 多个工人 单进程多线程
多个生产线 多个工人 多进程 多线程
线程是程序执行的最小单位
一个进程 由一个或多个线程组成
线程是一个进程中代码的不同执行路线
进程之间是相互独立的 ,同一个进程下 线程是共享内存空间的 包括 (代码段, 数据集堆等)
并发 多个线程同时运行 一个CUP下 计算机采用时间片 算法 其他线程处于就绪状态 这种方式我们称为并发
串行 一个cup 任务 A ->B ->C
并行 任务数量小于CPU核数 就是任务真的是一起执行的
一个cpu A 执行一会儿 B 执行一会儿 C 执行一会儿 轮着来 称为 并发
HashMap 以及多线程基本感念的更多相关文章
- 你是否听说过 HashMap 在多线程环境下操作可能会导致程序死循环?
作者:炸鸡可乐 原文出处:www.pzblog.cn 一.问题描述 经常有些面试官会问,是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100% 的线上故障? 关 ...
- Java之HashMap在多线程情况下导致死循环的问题
PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V& ...
- java中HashMap在多线程环境下引起CPU100%的问题解决(转)
最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...
- java中HashMap在多线程环境下引起CPU100%的问题解决
最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...
- 【JAVA】HashMap的原理及多线程下死循环的原因
再次翻到以前工作中遇到的一个问题,HashMap在多线程下会出现死循环的问题,以前只是知道会死循环,导致CPU100%把机器拖跨,今天来彻底看看 首先来看下,HashMap的原理:HashMap是一个 ...
- HashMap的resize方法中尾部遍历出现死循环问题 Tail Traversing (多线程)
一.背景介绍: 在看HashMap源码是看到了resize()的源代码,当时发现在将old链表中引用数据复制到新的链表中时,发现复制过程中时,源码是进行了反序,此时是允许反序存储的,同时这样设计的效率 ...
- 关于HashMap多线程下环形链表的总结
目录 1. 概述 2. 敲黑板的点 3. 为什么会出现循环链表的情况呢?(jdk1.7) 4. jdk1.8中改进了resize方法 5. HashMap的线程安全问题 6. 总结 1. 概述 本文主 ...
- HashMap多线程并发的问题
---恢复内容开始--- 前言:大多数javaer都知道HashMap是线程不安全的,多线程环境下数据可能会发生错乱,一定要谨慎使用.这个结论是没错,可是HashMap的线程不安全远远不是数据脏读这么 ...
- 图解集合5:不正确地使用HashMap引发死循环及元素丢失
问题引出 前一篇文章讲解了HashMap的实现原理,讲到了HashMap不是线程安全的.那么HashMap在多线程环境下又会有什么问题呢? 几个月前,公司项目的一个模块在线上运行的时候出现了死循环,死 ...
- HashMap在并发下可能出现的问题分析
我们都知道,HashMap在并发环境下使用可能出现问题,但是具体表现,以及为什么出现并发问题,可能并不是所有人都了解,这篇文章记录一下HashMap在多线程环境下可能出现的问题以及如何避免. 在分析H ...
随机推荐
- webpack原理(1):Webpack热更新实现原理代码分析
热更新,主要就是把前端工程 文件变更,即时编译,然后通知到浏览器端,刷新代码. 服务单与客户端通信方式有:ajax 轮询,EventSource.websockt. 客户端刷新一般分为两种: 整体页面 ...
- SpringBoot的EnableCaching简述
Spring Boot中的EnableCaching简述 spring boot中自带有数据缓存机制,主要通过其org.springframework.cache包下的各种类来实现. EnableCa ...
- 有了HTTP,为啥还要用RPC
既然有 HTTP 请求,为什么还要用 RPC 调用? 一直以来都没有深究过RPC和HTTP的区别,不都是写一个服务然后在客户端调用么? HTTP和RPC最本质的区别,就是 RPC 主要是基于 TCP/ ...
- vue中优雅的使用定时器
1.常见方法.在data中声明一个变量,定时器绑定到变量中,然后在beforeDestory中销毁这个定时器 举个例子 首先我在data函数里面进行定义定时器名称 data() { return { ...
- uniApp安卓离线SDK运行
一.下载uniapp提供的离线SDK包 下载地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android 版本:2022年09月26日 ...
- 关于关键字extends与implements的不同以及关于接口的详细介绍的文章
extends与implements的不同 1.在类的声明中,通过关键字extends来创建一个类的子类. 一个类通过关键字implements声明自己使用一个或者多个接口. extends 是继承某 ...
- python之opencv库
关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...
- Hugging News #0407: Google AI 的 Pix2Struct 来啦、开发者资源页面发布
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- Windows 下无法使用 C++11 标准 thread 类
问题描述 最近需要在 windows 平台使用 C++ 多线程编程,编译时提示错误 thread is not a member of std, or you maybe forget '#inclu ...
- Vue中使用Echarts 脱坑
1. 数据问题,不像官方实例所提供的数据直接写在options对应的数据源里,开发中应当是后端接口请求过来的数据,一般来说,会将echarts图标抽成组件的形式,需要的数据源通过父组件传给子组件,但是 ...