JAVAEE 初阶 多线程基础(一)

多线程基础

    • 一.线程的概念
    • 二.为什么要有线程
    • 三.进程和线程的区别和关系
    • 四.JAVA的线程和操作系统线程的关系
    • 五.第一个多线程程序
      • 1.继承Thread类

一.线程的概念

一个线程就是一个 “执行流”. 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码

同时,线程保证了独立的调度执行,而且也省去了资源的开销.

在这里插入图片描述
在这里插入图片描述

二.为什么要有线程

首先, “并发编程” 成为 “刚需”.
单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU资源.有些任务场景需要 “等待 IO”, 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编
程.
其次, 虽然多进程也能实现 并发编程, 但是线程比进程更轻量.创建线程比创建进程更快.销毁线程比销毁进程更快.调度线程比调度进程更快.
最后, 线程虽然比进程轻量, 但是人们还不满足, 于是又有了 “线程池”(ThreadPool) 和 “协程”(Coroutine)

三.进程和线程的区别和关系

1.进程至少包含一个线程
2.每个线程,是一个独立的执行流,它有独立执行的能力,同时也省去了分配资源和释放资源的开销,单独的参与到CPU的调度中(状态.上下文.优先级,记账信息等)
3.每个进程都有自己的资源,线程之间共用这些资源
4.线程并不是越多越好,有时候会降低效率.
5.同一个进程中的线程之间,可能会互相干扰.造成线程安全问题.
6.进程之间不会相互影响,但是线程和线程之间,如果某一个线程抛出异常,可能会对其他的线程造成影响,将整个进程中的全部线程中止.

四.JAVA的线程和操作系统线程的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用(例如 Linux 的 pthread 库).Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装

五.第一个多线程程序

1.继承Thread类

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190979.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类与对象(1)—初步认识

目录 一、面向过程和面向对象 二、类 1、定义 2、类的两种定义方式 3、访问限定符 4、命名规范化 5、类的实例化 6、计算类对象的大小 7、存储方式 三、this指针 1、定义 2、存储位置 3、辨析 四、封装好处 一、面向过程和面向对象 C语言是面向过程的&#xf…

算法设计与分析 | 分治棋盘

题目 在一个2^k * 2^k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格&#xff0…

解锁OpenAI潜力:OpenAI 全面解析与最佳实践

该项目是由OpenAI公司提供的一个大型代码库,其中包含了各类与OpenAI API相关的代码示例和最佳实践。 此项目名为OpenAI Cookbook,目的是为了帮助使用者更有效地利用OpenAI API,将其应用于自己的工作和生活中。具体来说,可以解决一…

【数字人】7、GeneFace++ | 使用声音驱动的面部运动系数作为 condition 来指导 NeRF 重建说话头

文章目录 一、背景二、相关工作2.1 唇形同步的 audio-to-motion2.2 真实人像渲染 三、方法3.1 对 GeneFace 的继承3.2 GeneFace 的结构3.2.1 Pitch-Aware Audio-to-Motion Transform3.2.2 Landmark Locally Linear Embedding3.2.3 Instant Motion-to-Video Rendering 四、效果 …

二叉树中的深搜之二叉树的所有路径

257. 二叉树的所有路径 - 力扣(LeetCode) 对于二叉树的深度搜索,要学会从以下三个角度来去看待问题: 1. 全局变量,有时候全局变量会减少参数的个数,简化很多流程; 这道题目,要返回根…

视频怎么做成二维码?在线教学视频码的制作技巧

视频是怎么制作成二维码的呢?现在经常会发现扫描很多的二维码会观看视频内容的情况,这种方式简化视频传递的过程,能够更加简单快捷的在线获取视频内容。对于想要了解视频二维码制作方法的小伙伴,小编通过本篇文章来教大家一招&…

手把手教你用C语言写出“走迷宫”小游戏(能看懂文字就会自己敲系列)

目录 设计迷宫地图 设计主角——小球 完整代码 这次教大家编写一个简单的“走迷宫”小游戏,我们可以通过键盘上的‘W’、‘S’、‘A’、‘D’四个键来控制一个“小球”向上,下,左,右移动,目的就是让这个“小球”从起…

【0基础学Java第十课】-- 认识String类

10. 认识String类 10.1 String类的重要性10.2 常用方法10.2.1 字符串构造10.2.2 String对象的比较10.2.3 字符串查找10.2.4 转化10.2.5 字符串替换10.2.6 字符串拆分10.2.7 字符串截取10.2.8 字符串的不可变性10.2.9 字符串修改 10.3 StringBuilder和StringBuffer10.3.1 String…

制作翻页电子相册,这个工具你必须了解!

电子相册作为一种很有纪念意义的载体,无论是生日、旅行、结婚、毕业纪念等等,可以应用在很多场合当中,如何制作呢? 而对于不会制作电子相册的人来说,使用套用模板是最直接快速的方式了。所以,推荐大家使用…

关于SPJ表的数据库作业

打字不易,且复制且珍惜 建表 use 库名;create table S( --供应商 SNO char(6) not null, SNAME char(10) not null, STATUS INT, CITY char(10), primary key(SNO));create table P( --零件 PNO char(6) not null, PNAME char(12)not null, COLOR char(4), WEIGHT…

小命令,大世界

Linux是一个大系统,功能丰富,好比是一台巨型机器,而命令,就是这台机器的操作台。要想控制好这台机器,用好这台机器,就得会看仪表,会操作各种按钮。《Linux常用命令自学手册》就是介绍如何操作这…

1334. 阈值距离内邻居最少的城市/Floyd 【leetcode】

1334. 阈值距离内邻居最少的城市 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边,距离阈值是一个整数 distanceThreshold。 返回能通过某些路径…