校园网站建设简介,2345浏览器网址入口,网站页面设计规范,百度端口开户推广进程#xff1a;正在运行中的程序#xff08;进程是驻留在内存中的#xff09; 是系统执行资源分配和调度的独立单位每一个进程都有属于自己的存储空间和系统资源注意#xff1a;进程A 和 进程B 的内存独立不共享
使用jdk自带的工具#xff0c;jconsole查看当前Java进程中… 进程正在运行中的程序进程是驻留在内存中的 是系统执行资源分配和调度的独立单位每一个进程都有属于自己的存储空间和系统资源注意进程A 和 进程B 的内存独立不共享
使用jdk自带的工具jconsole查看当前Java进程中的所有线程。 new Thread对象操作不创建线程。说的线程指的是 系统内核里的PCB 调用start才是创建PCB才是有货真价实的线程的。 线程进程中的单个顺序控制流也可以理解成是一条执行路径。 单线程一个进程中包含一个顺序控制流一条执行路径多线程一个进程中包含多个顺序控制流多条执行路径在java中线程A和线程B堆内存和方法区内存共享。但是栈内存独立一个线程一个栈。多线程为了提高程序的处理效率。对于单核的CPU来说不能够做到真正的多线程并发但是可以做到给人一种“多线程并发“的感觉。对于单核的CPU来说在某一个时间点上实际上只能处理一件事情但由于CPU的处理速度极快多个线程之间频繁切换执行给人的感觉是多个事情同时在做。 PCB(Process Control Block)进程控制块描述控制进程的运行系统中存放进程的管理和控制信息和数据结构。 PCB一般包括
进程IDPID、进程句柄它是唯一的一个进程都必须对应一个PID。特征信息一般分系统进程、用户进程、或者内核进程等。进程状态运行、就绪、阻塞、表示进程现的运行情况。优先级表示获得CPU控制权的优先级大小。通信信息进程之间的通信关系的反映由于操作系统会提供通信信道。线程保护区保护阻塞的进程用资源需求、分配控制信息进程实体信息指明程序路径和名称进程数据在物理内存还是在交换分区中其他信息工作单位、工作区、文件信息等。
同一个进程里的若干个PCB pid相同。不同进程的pid是不同的
PCB不是”简称“是一个数据结构体现的是 进程/线程是如何实现的如何被描述的。 PCB对应的是线程 一个线程对应多个PCB 如果一个进程只有一个线程就是一个进程对应一个PCB了。 线程安全问题罪魁祸首——抢占式执行随机调度。 本质上还是系统里的线程的封装每个Thread的对象就对应到系统中的一个线程也就是PCB start 和 run 区别 start是真正创建了一个线程从系统这里创建的run 知识描述了线程要干的活是啥如果直接在main中调用run此时没有创建新线程全是main线程一个人干的活。 进程和线程 进程包含线程要想看到线程要先找到对应的进程再看进程里有哪些线程。 实现线程方法 1、继承Thread重写 run 接口比抽象类更进一步抽象类接口则不行要求方法都是抽象方法。 2、实现Runnable接口 实现一个interface 解耦合目的就是为了让线程和线程要干的活 之间分离开。 未来改代码不用多线程或者线程池或者协程……此时代码改动较小。 3、使用匿名类继承Thread 创建了一个Thread的子类。子类没有名字所以才叫做匿名。 创建了子类的实例并且让 t 引用执行实例 4、使用匿名内部类实现Runnable 这个写法和2本质相同只不过把实现Runnable任务交给匿名内部类的语法。 此处是创建了一个类实现了Runnable同时创建了类的实例并且传给Thread的构造方法。 5、使用Lambda表达式最简单推荐写法 把任务Lambda表达式来描述 直接把Lambda传给Thread构造方法 匿名内部类被重写方法的形参列表- { 被重写方法的方法体代码 } lambda 表达式只能简化函数式接口匿名内部类的写法形式且接口中有且仅有一个抽象方法 上述方法只是语法规则不同本质上都是一样的方式这些方式创建处理啊的线程都是一样的。 抽象类与普通类的区别 抽象类不能实例化不能new必须要搞个子类来继承抽象类抽象类里还有抽象方法抽象方法没有方法体需让子类重写