01-进程和线程的概述

进程和线程的相关概念

概述

进程是一个运行中的应用程序,一个进程是一个执行中的软件

  • 每打开一个软件就相当于启动了一个进程 , 操作系统就会为该进程分配一个内存空间, 进程A和进程B的内存独立不共享

线程是由进程创建的,一个进程可以启动多个线程,线程是一个进程中的执行场景/执行单元

  • 打开迅雷相当于启动了一个进程,在迅雷中下载多个文件,相当于迅雷进程开了多个线程

默认情况下整个进程的所有线程都结束才会造成我们的进程结束,main方法结束只是主线程结束了,主栈空了其它的栈(线程)可能还在压栈弹栈

  • 单线程: 表示同一个时刻只允许执行一个线程
  • 多线程: 表示表示同个一时刻可以执行多个线程,java中支持多线程机制,目的就是为了提高程序的处理效率

线程A和线程B共享堆内存和方法区内存,但是线程A和线程B的栈内存独立即一个线程一个栈

  • 多线程并发: 启动10个线程就会有10个栈空间,每个栈和每个栈之间各自执行互不干扰,多个线程之间的关系是并发或者并行

在这里插入图片描述

并发和并行

并发和并行就是同时执行了多个线程出现的一种情况

  • 并发: 对于单核CPU同一时刻只能处理一件事情,但是由于CPU的处理速度极快,多个线程之间频繁切换执行,给人多个线程一起执行的感觉
  • 并行: 对于多核CPU同一时刻多个任务可以同时执行,如4核CPU表示同一个时间点上可以真正的有4个进程并发执行

获取当前电脑的CPU数量RunTime类的availableProcessors方法

//单例设计模式
RunTime runtime = RunTime.getRunTime;
int cpuNums = runtime.availableProcessors();
System.out.println("当前电脑的cpu数量是" + cpuNums)

Java程序即进程

Java程序的流程: 先启动JVM进程–>JVM再启动一个主线程负责调用main方法和一个垃圾回收线程负责看护回收垃圾(至少有这两个线程并发)

  • 在主线程中执行线程对象的start方法又可以开启其他子线程,此时主线程和子线程同时执行,默认整个进程的所有线程都结束时才会造成我们的进程结束

使用jconsole命令可以监控线程的执行情况

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_57005976/article/details/134997807