「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战」
后续是多线程和Android线程知识,预计会学习分享一周,现在我们来一起回顾一下CPU的基本知识吧
一、CPU基础概念
1. CPU时间片轮转机制
我们可以从百度百科了解到
时间片轮转调度是一种最古老最简单,最公平且使用最广的算法。每个进程被分配一时间段,如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
1. CPU核心数和线程数的关系
- CPU个数:是指物理上,即硬件上的核心数
- 核心数:是逻辑上的,简单理解为逻辑上模拟出的核心数
- 线程数:是同一时刻设备能并行执行的程序个数,线程数 = cpu个数 * 核数
1. 什么是进程和线程
- 进程:进程就是正在运行的程序,它是系统资源调度的独立单位,各个进程之间不会相互影响,因为系统给它们分配了不同的空间和资源,它分为单进程和多进程。
- 线程:线程就是程序(进程)执行的任务,线程是CPU调度的最小单位,必须依赖于进程而存在,它分为单线程和多线程。
1. Java里的多线程
Java里的程序是天生就是多线程的,启动线程的方式有:
- Thread类
- Runnable接口
Thread类
val thread = object : Thread() {
override fun run() {
super.run()
sleep1(1000);
}
}
thread.start()
Runnable接口
class RunnableDemo : Runnable {
override fun run() {
Thread.sleep(1000);
}
}
Runnable接口并没有任何对线程的支持,我们必须创建线程类(Thread类)的实例
val runnableDemo = RunnableDemo()
val thread = Thread(runnableDemo)
thread.start()
所以对于 实现了Runnable接口的类,称为 线程辅助类;Thread类才是真正的线程类
线程常用方法和线程的状态
线程常用方法和线程的状态看这幅图就可以理解了
下篇一起研究一下锁