14Java多线程之介绍

推荐链接:

Java 多线程编程 - 菜鸟

Java 多线程详解系列

300 行代码带你秒懂 Java 多线程!

程序

链接: 计算机程序

​ 一个普通文件,一个机器代码指令和数据的集合

进程

链接: 进程 、 多进程

进程是资源分配的最小单位,线程是CPU调度的最小单位。

​ 就是正在运行的程序

​ 通过任务管理器我们就看到了进程的存在。

  每一个进程都有它自己的内存空间和系统资源。

多进程意义

  进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。

  举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。

  现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。

  可以提高CPU的使用率。

问题:

  游戏,一边听音乐是同时进行的吗?

  不是。因为单CPU在某一个时间点上只能做一件事情。而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。

程序和进程的区别

  进程是动态的,程序是静态的:程序是有序代码的集合,进程是程序的执行。进程有核心态/用户态。

  进程是暂时的,程序是永久的;进程是一个状态变化的过程,程序可以长久保存

  进程和程序的组成不同,进程的组成包括程序、数据和进程控制块(即进程状态信息)

线程:依赖于进程而存在

链接: 线程多线程https://www.cnblogs.com/-new/p/7234332.html

进程是资源分配的最小单位,线程是CPU调度的最小单位。

  在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。

    线程:是进程中的单个顺序控制流,是一条执行路径。

    单线程:一个进程只有一条执行路径。

    多线程:一个进程有多条执行路径。

  多线程意义

    多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。

    程序的执行其实都是在抢CPU的资源,CPU的执行权。

    多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。

    我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。

  Java程序的运行原理及JVM的启动是多线程的吗?

    A:Java命令会启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个 “主线程”, 然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。

    B:JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。

并发、并行、同步、异步、多线程的区别

并发、并行、同步、异步、多线程的区别?

并发和并行、同步和异步及多线程概念详解

  并发和并行最开始都是操作系统中的概念,表示的是CPU执行多个任务的方式。这两个概念极容易混淆。

  并发(Concurrent)是逻辑上同时发生,指在同一时间段内同时发生,在同一个CPU的同一个核心上交替运行。单核单CPU同时处理多个任务,多个任务之间互相抢占资源。

  并行(Parallel)是物理上同时发生,指在同一时刻同时发生。当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。多CPU(或多核单CPU)同时处理多个不同的任务,多个任务之间不互相抢占资源。

  只有在多CPU(或多核单CPU)的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。

同步 - 维基百科

  异步和多线程:不是同等关系,异步是目的,多线程只是实现异步的一种手段。实现异步可以采用多线程技术或者交给其他进程处理。

什么是CPU密集型、IO密集型

CPU密集型 - 维基百科

什么是CPU密集型、IO密集型?

CPU 密集型 和 IO密集型 的区别,如何确定线程池大小?