当前位置: 首页 > news >正文

多线程Thread

线程Thread简介

任务、线程、金城、多线程

多任务:短时间切换不同得任务

多线程:通过同一条道路,增加道多条道路,提高使用率,解决堵塞问题

普通方法调多线程只有主线一台执行路径是主线程调run()方法,方法执行解决之后再继续向下执行。

多线程的方法是主线程和子线程并行,交替执行。主线程走主线程的,子线程走子线程的,多条路径执行,可以同时间做很多事情。

进程Process实现

一个进程可以执行多个线程

Thread与Process

1.一台机器上运行着多个程序,一个程序就是一个进程。程序是指令和数据德有序集合,本身是没有含义的是一个静态的概念。

2.进程是是执行程序的一次执行过程,他是动态的概念,是系统资源分配的单位。

3.通常再一个进程中可以包含若干个线程,一个进程终至少有一个线程,不然灭有存在的意义。线程是cpu调度和执行的单位

一个进程可以拥有多个线程,多个线程之间是互不影响的关系

核心概念

1.线程是独立的执行路径

2.在程序运行时,及时自己没有主动的去创建线程,后台也会有多个线程,如主线程和gc(垃圾回收)线程

3.main()方法就是主线程,是系统的入口,用于执行整个程序。

4.多线程的运行是由调度器(cpu)调度器安排调度,先后顺序不能认为干预。

5.多线程往往会同事操作一份资源,存在资源巧夺的问题,这里就有了并发控制的概念和需要

6.线程越多对cpu资源分配的时间和并发控制有影响

7.多线程之间如果并发控制没有做好,会导致多线程之间内存交互,最终导致底层数据不一致的问题

线程创建

Thread、runnable、callable

现成的创建有三种方法

1.继承Thread类

2.实现Runnable接口

3.实现Callable接口

注:Thread类就是实现的Runnable接口

继承Thread类

步骤:

1.自定义线程类继承Thread方法

2.重写run()方法,编写线程执行体

3.创建对象,调用start()方法启动线程

注:线程开始不一定立即执行,由cpu调度安排

实现Runnable接口

1.自定义Runnable实现类实现Runnable接口

2.实现run()方法,白那些线程执行体

3.创建线程Thread对象,调用start()方法启动线程

线程状态

线程同步

线程通信问题

其他

程序运行后会有很多进程,每个进程都由一个或多个线程完成,

在实际项目里怎么把任务加入线程,线程怎么管理

相关文章:

多线程Thread

线程Thread简介 任务、线程、金城、多线程 多任务:短时间切换不同得任务 多线程:通过同一条道路,增加道多条道路,提高使用率,解决堵塞问题 普通方法调多线程只有主线一台执行路径是主线程调run()方法,方…...

计算机网络之WPAN 和 WLAN

上一篇文章内容:无线局域网 1.WPAN(无线个人区域网) WPAN 是以个人为中心来使用的无线个人区域网,它实际上就是一个低功率、小范围、低速率和低价格的电缆替代技术。 (1) 蓝牙系统(Bluetooth) &#…...

TikTok海外运营,云手机多种变现方法

从现阶段来看,TikTok 的用户基数不断增长,已然成为全球创业者和品牌的全新竞争舞台。其用户数量近乎 20 亿,年轻用户占据主导,市场渗透率也逐年提高。不管是大型企业、著名品牌,还是个体创业者,都绝不能小觑…...

kubekey在ubuntu24实现kubernetes快速安装

基于Ubunut24.04安装 设置主机名 hostnamectl set-hostname kkmain hostnamectl set-hostname kknode1 hostnamectl set-hostname kknode2关闭swap sudo swapoff -a sudo sed -i s/.*swap.*/#&/ /etc/fstab安装kubekey export KKZONEcn curl -sfL https://get-kk.kubes…...

根据关键词query获取google_img(api方式)

文章目录 说明代码第一部分:链接保存为Json第二部分:链接转换为img 说明 根据关键词query获取google_img USERNAME “xxx” PASSWORD “xxx” 官网申请。 代码 首先获取图片链接,保存为json之后下载。 第一部分:链接保存为…...

西安明德理工学院师生莅临泰迪智能科技开展参观见习活动

为进一步深化校企合作,落实高校应用型人才培养。7月8日,西安明德理工学院与广东泰迪智能科技股份有限公司联合开展学生企业见习活动。西安明德理工学院金融产业学院副院长刘敏、金融学专业负责人张莉萍、金融学专业教师曹艳飞、赵浚妤、泰迪智能科技董事…...

通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行

18 位人形机器人充当「迎宾」人员,整齐划一向嘉宾挥手,这是 2024 世界人工智能大会上的一个震撼场景,让人们直观感受到了今年机器人的飞速发展。 图源:甲子光年 1954 年,世界上第一台可编程机器人「尤尼梅特」在通用汽…...

基于Java中的SSM框架实现疫情冷链追溯系统项目【项目源码+论文说明】

基于Java中的SSM框架实现疫情冷链追溯系统演示 摘要 近几年随着城镇化发展和居民消费水平的不断提升,人们对健康生活方式的追求意识逐渐加强,生鲜食品逐渐受到大众青睐,诸如盒马鲜生、7-fresh等品牌生鲜超市,一时间如雨后春笋般迅…...

想在vue中预览doxc,excel,pdf文件? vue-office提供包支持

在浩瀚的Vue生态中,vue-office犹如一颗璀璨的星辰,以其独特的魅力照亮了开发者处理多种文件格式的预览之路。这款精心打造的Vue组件库,不仅拥抱了Vue2的经典,也紧密跟随Vue3的步伐,展现了卓越的技术前瞻性和兼容性。它…...

PostgreSQL16安装Mac(brew)

问题 最近需要从MySQL切换到PostgreSQL。我得在本地准备一个PostgreSQL。 步骤 使用brew安装postgresql16: arch -arm64 brew install postgresql16启动postgresql16: brew services start postgresql16配置postgresql环境变量,打开环境变量文件: …...

【语音识别算法】深度学习语音识别算法与传统语音识别算法的区别、对比及联系

深度学习语音识别算法与传统语音识别算法在理论基础、实现方式、性能表现等方面存在显著区别,同时也有一些联系。下面将从几个方面详细比较这两种方法,并给出应用实例和代码示例。 一、理论基础与实现方式 1.传统语音识别算法: 特征提取&a…...

图片批量重命名bat,一个脚本快速搞定图片批量重命名

BAT 批处理 是一种在 Microsoft Windows 操作系统中使用的脚本语言,用于自动执行一系列预定义的命令或任务。这些命令集合通常存储在一个文本文件中,文件扩展名为 .bat 或 .cmd。批处理脚本可以包含简单的命令,如文件复制、移动、删除&#x…...

基于stm32单片机的智能手环的设计

摘 要 随着科技的飞速发展和人们生活水平的提高,健康与科技日益融合,智能可穿戴设备已成为现代人生活中不可或缺的一部分。智能手环,作为一种便携、实用且功能丰富的可穿戴设备,受到越来越多用户的喜爱。它不仅能够实时监测用户的…...

雷池WAF动态防护功能初体验

一、 介绍 大名鼎鼎的雷池WAF最近新上了个名为 动态防护 的功能 所谓动态防护,是在用户浏览到的网页内容不变的情况下,将网页赋予动态特性,即使是静态页面,也会具有动态的随机性。 说白了就是给你网站的 html 和 js 代码加上加密…...

持安科技CEO何艺荣获中国信通院2023-2024年度标准卓越贡献奖

近日,由中国信息通信研究院、中国通信标准化协会承办的“全球数字经济大会—云和软件安全论坛”暨“2024第二届SecGo云和软件安全大会”胜利召开,零信任办公安全技术创新企业持安科技创始人兼CEO何艺获评为2023-2024年度零信任领域标准卓越贡献者。 由中…...

gitee上传和下载idea项目的流程

环境:idea2022 一、上传项目 1、在gitee中新建一个仓库。 2、打开所要上传的项目的文件夹,点击Git Bash,生成.git文件夹。 3、在idea中打开所要上传的项目,在控制台的Terminal菜单中,输入git add . (注意&#xf…...

【Numpy】np.loadtxt 读取单行数据时报错。(零维数组)

np.loadtxt 读取单行数据时遇到了报错 代码: import numpy as nplabelPath"./name.names" names np.loadtxt(labelPath, dtypestr)print(names[0])names中的数据: 报错: IndexError: too many indices for array: array is 0-…...

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …...

自然语言处理(NLP)与大语言模型(LLM) 主要差异

一、简述 NLP 和 LLM 技术是大规模分析和生成人类语言的核心。随着它们的日益普及,区分 LLM 与 NLP 变得越来越重要。 NLP 包含一套用于理解、操纵和生成人类语言的算法。自 20 世纪 50 年代诞生以来,NLP 已发展到分析文本关系的阶段。它使用词性标注、命…...

智能车载防窒息系统设计

摘要 随着汽车行业的快速发展,车辆安全问题越来越受到人们的关注。其中,车载防窒息系统是一项重要的安全设备。本论文基于STM32单片机,设计了一种智能车载防窒息系统。该系统主要包括氧气浓度检测模块、温湿度检测模块、声音检测模块、光线检…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...