1-操作系统(operate system -os):
1)os定位:一款纯正的“搞管理”的软件-硬件管理和软件管理
2)进程:一个任务就是一个进程(process);程序的一个执行实例,正在执行的程序。分配系统资源(CPU,时间,内存)的实体。进程属于内存中最小资源分配单位。
操作系统的任务调度是采用时间片轮转的抢占式调度方式
3)时间片:任务执行的一小段时间,一个CPU在一个时间内轮流动态调度运行状态
时间范围-某一时间段,时间片轮转
4)并行和并发区别:
并发 一个CPU 时间段范围 时间轮换调动 伪同时
并行 多个CPU 时间点 真同时
5)进程上下文:程序运行环境的切换
6)进程状态
就绪 程序处于可运行状态,CPU时间片还没有轮转到该进程
运行 程序处于可运行状态,CPU时间片轮转到该进程正在执行代码
阻塞 进程不具备运行条件,正在等待某个事情完成
7)内核态与用户态
权限的不同
1)进程和线程
进程是资源分配的最小单位,线程是系统调度的最小单位。一个进程中的线程之间是可以进行资源共享的。一个进程中至少有一个线程存在即主线程
main主线程 --基于操作系统
2)创建一个新的执行线程有两种方法。
一个是将一个类声明为Thread的子类。 这个子类应该重写run类的方法Thread 。 然后可以分配并启动子类的实例。另一种方法来创建一个线程是声明实现类Runnable接口。 那个类然后实现了run方法。 然后可以分配类的实例,在创建Thread时作为参数传递,并启动。
1、Java中的main 是一个Java层面的主线程 平集的关系
JavaMain主线程和自己创建的线程是平集的关系
2、线程是由操作系统进行管理调度,所以是无序的
3、start()方法启动线程是 run()只是执行任务的部分代码,不会真是启动线程
4、创建并启动线程,会在操作系统中真实的创建并申请系统调度该线程,在申请后由CPU时间片调度执行(就绪态-->运行态),其中创建线程是比较耗时的
sleep-使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统 ,定时器和调度程序的精度和准确性