加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 运营 > 正文

2021年深度智能的发展趋势

发布时间:2021-02-01 10:20:05 所属栏目:运营 来源:互联网
导读:ConcurrentHashMap 是如果来做到高效并发安全? 1.读操作 get方法中根本没有使用同步机制,也没有使用unsafe方法,所以读操作是支持并发操作的。 2.写操作 基本思路跟HashMap的写操作类似,只不过用到了CAS + syn 实现加锁,同时还涉及到扩容的操作。JDK8中锁

ConcurrentHashMap 是如果来做到高效并发安全?

1.读操作

get方法中根本没有使用同步机制,也没有使用unsafe方法,所以读操作是支持并发操作的。

2.写操作

基本思路跟HashMap的写操作类似,只不过用到了CAS + syn 实现加锁,同时还涉及到扩容的操作。JDK8中锁已经细化到 table[i] 了,数组位置不同可并发,位置相同则去帮忙扩容。

3.同步处理主要是通过syn和unsafe的硬件级别原子性这两种方式完成

当我们对某个table[i]操作时候是用syn加锁的。

取数据的时候用的是unsafe硬件级别指令,直接获取指定内存的最新数据。

3 、并发基础知识

并发编程的出发点:充分利用CPU计算资源,多线程并不是一定比单线程快,要不为什么Redis6.0版本的核心操作指令仍然是单线程呢?对吧!

多线程跟单线程的性能都要具体任务具体分析,talk is cheap, show me the picture。

3.1 进程跟线程

进程:

进程是操作系统调用的最小单位,是系统进行资源分配和调度的独立单位。

线程:

因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,是CPU调度的最小单位。线程可以减少程序并发执行时的时间和空间开销,使得操作系统具有更好的并发性。

线程基本不拥有系统资源,只有一些运行时必不可少的资源,比如程序计数器、寄存器和栈,进程则占有堆、栈。线程,Java默认有两个线程 main 跟GC。Java是没有权限开线程的,无法操作硬件,都是调用的 native 的 start0 方法 由 C++ 实现

3.2 并行跟并发

并发:

concurrency : 多线程操作同一个资源,单核CPU极速的切换运行多个任务

并行:

parallelism :多个CPU同时使用,CPU多核 真正的同时执行

3.3 线程几个状态

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读