2021年深度智能的发展趋势
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 线程几个状态 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |