一.Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、 ...
分类:
其他好文 时间:
2020-04-25 12:25:23
阅读次数:
55
为什么要用线程池 随着处理器的核心越来越多,利用多线程技术可以把计算逻辑拆分成多个片段,分配到多个核心上,可以显著减少处理时间,提高效率;复杂的业务逻辑,可以使用多线程并发处理,缩短响应时间,提高用户体验。java的线程机制是抢占式协作多线程, 调用机制会周期性的中断线程,将上下文切换到另一个进程, ...
分类:
编程语言 时间:
2020-04-20 13:42:23
阅读次数:
70
并发编程的目的是为了让程序运行得更快,提高程序的响应速度,虽然我们希望通过多线程执行任务让程序运行得更快,但是同时也会面临非常多的挑战,比如像线程安全问题、线程上下文切换的问题、硬件和软件资源限制等问题,这些都是并发编程给我们带来的难题。 ...
分类:
编程语言 时间:
2020-04-11 12:42:49
阅读次数:
53
一. 上节回顾 1. 什么是进程?什么是线程?它们之间的区别? 2. CPU命令 查看物理CPU的个数 查看每个物理CPU的核数 查看逻辑CPU的个数 3. CPU架构 从处理器层面查看 从操作系统层面查看 4. uptime load average:三个负载的含义 平均负载和CPU使用率 5. ...
分类:
系统相关 时间:
2020-04-09 00:31:10
阅读次数:
131
多线程概念 进程与线程 进程是操作系统进行资源分配的最小单位,CPU从一个进程切换到另一个进程叫做进程上下文切换。 线程是CPU调度的最小单位,是进程的一部分,由进程创建,一个进程拥有1~N个线程。线程又分为用户线程和守护线程,两者的区别是,后者会随着主线程结束而结束。 Thread线程类 继承th ...
分类:
编程语言 时间:
2020-04-07 22:15:27
阅读次数:
103
CPU上下文 在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器(Program Counter,PC)。 CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。而程序计数器,则是用来存储 CPU 正在执行的指令位 ...
分类:
其他好文 时间:
2020-04-07 00:10:43
阅读次数:
65
问题1:什么叫协程? 协程(Coroutine)是线程的更小切分,又称为“微线程”,是一种用户态的轻量级线程。线程是系统级别的它们由操作系统调度;协程则是程序级别的由程序员根据需要自己调度。 问题2:协程与线程的区别? 1)线程之间需要上下文切换成本相对协程来说是比较高的,尤其在开启线程较多时,但协 ...
分类:
编程语言 时间:
2020-03-28 23:15:31
阅读次数:
89
运行环境: Win 7 JDK 8 + Redis 3.0.504 Spring Boot 2.2.2.RELEASE 一、为什么要使用Redis 速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件; 丰富的数据类型,Redis有8 ...
分类:
编程语言 时间:
2020-03-28 17:39:38
阅读次数:
79
【场景】客户端大量连接,如果采用多线程方式的话,线程上下文切换导致性能不佳。因此采用io多路复用。 一、上下文切换 对于单核CPU来说(对于多核CPU,此处就理解为一个核),CPU在一个时刻只能运行一个线程,当在运行一个线程的过程中转去运行另外一个线程,这个叫做线程上下文切换(对于进程也是类似)。 ...
分类:
其他好文 时间:
2020-03-28 16:16:39
阅读次数:
71
1.进程与线程 2.线程与进程的关系,区别,优缺点 3.并发与并行 4.线程的生命周期和状态 5.什么是上下文切换 6.什么是线程死锁,怎么避免线程死锁 7.sleep()方法与wait()方法的区别 8.为什么调用start()方法会自动调用run()方法,为什么不直接调用run()方法 sync ...
分类:
其他好文 时间:
2020-03-23 16:56:59
阅读次数:
61