专栏首页IT可乐Java 多线程详解(一)------概念的引入

Java 多线程详解(一)------概念的引入

  这是讲解 Java 多线程的第一章,我们在进入讲解之前,需要对以下几个概念有所了解。

1、并发和并行

并行:指两个或多个时间在同一时刻发生(同时发生);

并发:指两个或多个事件在一个时间段内发生。

  在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。

  而在多个 CPU 系统中,则这些可以并发执行的程序便可以分配到多个处理器上(CPU),实现多任务并行执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个程序便可以同时执行。

  目前电脑市场上说的多核 CPU,便是多核处理器,核 越多,并行处理的程序越多,能大大的提高电脑运行的效率。

注意:单核处理器的计算机肯定不能并行的处理多个任务,只能是多个任务交替的在单个 CPU 上运行。

2、进程和线程

进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。

  线程:进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,可以理解为一个进程便相当于一个单 CPU 操作系统,而线程便是这个系统中运行的多个任务。

我们可以再电脑底部任务栏,右键----->打开任务管理器,可以查看当前任务的进程和线程

线程选项:

 3、进程与线程的区别

  进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程。

  线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。

注意:1、因为一个进程中的多个线程是并发运行的,那么从微观角度看也是有先后顺序的,哪个线程执行完全取决于 CPU 的调度,程序员是干涉不了的。而这也就造成的多线程的随机性。

   2、Java 程序的进程里面至少包含两个线程,主进程也就是 main()方法线程,另外一个是垃圾回收机制线程。每当使用 java 命令执行一个类时,实际上都会启动一个 JVM,每一个 JVM 实际上就是在操作系统中启动了一个线程,java 本身具备了垃圾的收集机制,所以在 Java 运行时至少会启动两个线程。

   3、由于创建一个线程的开销比创建一个进程的开销小的多,那么我们在开发多任务运行的时候,通常考虑创建多线程,而不是创建多进程。

4、多线程的优势

  1、进程之间不能共享内存,而线程之间可以共享内存。

  2、系统创建进程需要为该进程重新分配系统资源,创建线程的代价则小的多,因此多任务并发时,多线程效率高。

  3、Java 语言本身内置多线程功能的支持,而不是单纯作为底层系统的调度方式,从而简化了多线程编程。

注意:多线程是为了同步完成多个任务,不是为了提高程序运行效率,而是通过提高资源使用效率来提高系统的效率。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 多线程详解(五)------线程的声明周期

    Java 多线程详解(一)------概念的引入:https://cloud.tencent.com/developer/article/1012542 Jav...

    IT可乐
  • VMware 克隆多台Linux机器并配置IP

    1、查看并分配虚拟网络   我们首先要知道 VMware 三种网络模式的区别。   ①、Bridged(桥接模式):就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥...

    IT可乐
  • Redis详解(二)------ redis的配置文件介绍

      上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件 redis.conf (/opt/redis-4.0.9目录下),关于...

    IT可乐
  • Python 面试题大全系列(三)

    物理层:网线,电缆等物理设备 数据链路层:Mac 地址 网络层:IP 地址 传输层:TCP,UDP 协议 应用层:FTP 协议,Email,WWW 等

    周萝卜
  • 每天一道面试题 | day03

    进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独立单位。

    剑走天涯
  • 进程和线程的概述

    黑泽君
  • LinuxThread VS NPTL

    《原文出自http://blog.csdn.net/guosha, 转载请注明出处》

    一见
  • 【坑】接口等幂性实施策略

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1149268
  • 「深度」在水下机器人开疆扩土之时,避免沦为泡沫应成为全行业重点

    镁客网
  • Python 多线程 threadin

    py3study

扫码关注云+社区

领取腾讯云代金券