多线程快速入门

ST-LINK调试原理与STM32硬件连接实战指南 嵌入式调试器是连接开发环境与物理MCU的核心枢纽,其本质是基于ARM CoreSight架构的实时硬件观测与控制接口。它通过JTAG或SWD协议访问内核寄存器、内存及外设,实现断点、单步、内存监视等深度调试能力,远超简单程序烧录功能。ST-LINK作为主流ARM Cortex-M调试器,支持SWD(2线)与JTAG(多线)双模式,在电平匹配、复位控制、引脚复用规避等硬件层面临关键工程约束。掌握VREF参考电压配置、nSRST硬复位接线、调试引脚隔离策略及Keil MDK调试会话配置,是保障STM32稳定联机 阅读详情

多线程快速入门

线程与进程区别

每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。

如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的中止需要考虑其对程序运行的影响。通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。

总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

进程中有多个不同的执行路径 进程是多个线程的集合

进程展示之:进程展示执行中的程序

一个操作系统有多个进程

在进程中如何执行?

代码的执行顺序,主线程 一个执行顺序 执行路径

 

 迅雷这样的用户体验好 三个执行路径

 提高程序效率

使用多线程 各个线程互不影响

多线程应用场景

 下载 分布式job需要同时一个执行多个任务调度

多线程应用场景?

答:主要能体现到多线程提高程序效率。

举例: 迅雷多线程下载、数据库连接池、分批发送短信等。

多线程创建方式

第一种继承Thread类 重写run方法

 

package com.toov5.thread;

class CreateThread extends Thread{
    
    public void run(){
        for(int i=0; i<10 ;i++){
            System.out.println("i:"+i);
        }
    }
    
}

public class ThreadTest  {
     
    public static void main(String[] args) {
         CreateThread createThread     = new CreateThread();
         createThread.start();
    } 
     
    
}

输出的结果顺序 不按套路来

 

第二种实现Runnable接口,重写run方法

 

package com.toov5.thread;

class CreateThread1 implements Runnable{
    
       public void run(){
           for(int i =0 ;i<10 ;i++){
               System.out.println("i:"+i);
           }
       }
}
public class ThreadRunnableTest {
      public static void main(String[] args) {
         System.out.println("创建"); 
         CreateThread1 threadRunnable = new CreateThread1();
         System.out.println("启动");
         Thread thread = new Thread(threadRunnable);
         thread.start();
         System.out.println("结束");
      }    
    
}

 

第三种使用匿名内部类方式

package com.toov5.thread;

public class ThreadanonymityTest {
  
    public static void main(String[] args) {
        System.out.println("开始");
         new Thread(new Runnable() {
            
            @Override
            public void run() {
                for(int i=0; i<10;i++){
                    System.out.println("i:"+i);
                }
                
            }
        }).start();
    System.out.println("结束");     
    }
    
    
}

 

使用继承Thread类还是使用实现Runnable接口好?

 使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了类不能再继承。

 

获取线程对象以及名称

常用线程api方法

start()

启动线程

currentThread()

获取当前线程对象

getID()

获取当前线程ID      Thread-编号  该编号从0开始

getName()

获取当前线程名称

sleep(long mill)

休眠线程

Stop()

停止线程,

常用线程构造函数

Thread()

分配一个新的 Thread 对象

Thread(String name)

分配一个新的 Thread对象,具有指定的 name正如其名。

Thread(Runable r)

分配一个新的 Thread对象

Thread(Runable r, String name)

分配一个新的 Thread对象

 

 

 PS:补充下同步和异步的概念

代码从上往下依次进行执行 叫同步。 是单线程的

异步是多线程的,多个执行路径。比如上面的代码有两条执行路径

 

 

【模型实战】MiMo-VL-7B讲解与实战 维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。 阅读详情

相关推荐

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

[python]多线程快速入门

f"{time.strftime('%F %T')} {self.tname} 消费数据 {data}, queue size: {self.channel.qsize()}"f"{time.strftime('%F %T')} {self.tname} 生成数据 {num}, queue size: {self.channel.qsize()}"将任务添加到线程池中,线程池会自动指定一个空闲的线程去执行任务,当超过最大线程数时,任务需要等待有新的空闲线程才会被执行。池化多线程,也就是线程池就为此而生。

weixin_55010563的博客 697

Flowable前端可视化配置动态审批人:告别硬编码,实现部门领导、项目经理自动分配

本文详细介绍了Flowable前端可视化配置动态审批人的全栈解决方案,通过表达式分配、监听器分配等动态审批人机制,实现从硬编码到智能分配的转变。文章提供了前端扩展bpmn-js设计器、后端动态解析实现方案及性能优化建议,帮助企业应对组织架构变动,提升审批流程的灵活性和效率。

weixin_30352645的博客 473

Java中的多线程快速入门

这篇教程介绍了Java多线程编程的基础概念和实现方法。主要内容包括:两种实现多线程的方式(继承Thread类和实现Runnable接口),并提供了详细的代码示例演示如何创建和启动线程。文章还解释了关键知识点如线程启动方法、sleep方法的作用,以及主线程的概念。最后简要提及了线程同步问题,展示了synchronized关键字的使用方法。作为入门指南,该教程为后续学习线程生命周期、线程池等高级主题奠定了基础。

胡西风的博客 390

TBtools的序列提取步骤

本教程详细介绍了如何使用TBtools软件从原来的FASTA序列中提取特定的DNA序列。

weixin_47509995的博客 1万+

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

泛红尘的博客 2997

多线程的快速入门

多线程的快速入门 1、进程与线程的关系? 一、在任务管理器中,我们可以看到很多应用程序,这些应用程序就是一个进程。 二、一个进程是多个线程的集合 三、一个线程是一个进程的执行路径 2、多线程的作用 多线程相当于异步执行,其作用是为了提高程序处理问题的执行效率 3、多线程的使用场景 一、下载软件,比如迅雷、百度网盘 二、向很多用户群发短信(类似于将一个很大的文件分割成几份,然后由多线程来进行处理...

qq_37630321的博客 275

01-嵌入式入门-如何看原理图

最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征"。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。...

weixin_34010566的博客 4484

Java多线程快速入门

趁着最近课少,复习一下Java多线程相关知识,顺便发一下以前的笔记

热爱编程、热爱生活、热爱探索 936

从AAAI 2025被拒到ACM MM 2025录用:我的论文投稿经验与教训总结

本文分享了作者从AAAI 2025被拒到ACM MM 2025录用的论文投稿经验与教训。详细解析了格式要求、可复现性清单等关键细节,提供了精准转投策略和提升录用概率的实用技巧,帮助研究者避免常见错误并优化投稿策略。

weixin_29207533的博客 504

王道考研操作系统笔记(第一章)附:王道考研408所有PPT和思维导图

学习感想 别人的笔记对你的学习基本上没有用处,容易培养人的惰性,如需ppt和思维导图请拉到最后,有github链接 记笔记并不是一件浪费时间的事情,还有利于多次学习 真心希望大家在学习的过程中记笔记 操作系统 第一章 计算机系统概述 1.1 操作系统 1.1.1 操作系统的概念和功能 概念 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软

qq_41732756的博客 1万+

Linux多线程编程快速入门

Linux多线程编程快速入门 本文主要对Linux下的多线程进行一个入门的介绍,虽然是入门,但是十分详细,希望大家通过本文所述,对Linux多线程编程的概念有一定的了解。具体如下。   1 线程基本知识 进程是资源管理的基本单元,而线程是系统调度的基本单元,线程是操作系统能够进行调度运算的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进...

qq_29823093的博客 154

【信息科学与工程学】【物理/化学科学和工程技术】第八篇 光学07

对于光源-探测器距离 ρ, 稳态漫反射率 R(ρ) ≈ (1/(4π)) [ z₀ (μ_eff + 1/r₁) exp(-μ_eff r₁)/r₁² + (z₀ + 2z_b) (μ_eff + 1/r₂) exp(-μ_eff r₂)/r₂² ], 其中 μ_eff = √(3μ_a(μ_a+μ_s’)), z₀=1/μ_s’, z_b 与边界条件有关。通过测量光纤各点的布里渊频移 ν_B(z) 来得到应变/温度分布:Δν_B(z) = C_ν,ε Δε(z) + C_ν,T ΔT(z)。

weixin_49199313的博客 329

001多线程快速入门

线程与进程的区别 为什么使用多线程? 多线程使用场景 多线程创建方式 线程生命周期 面试总结 1.线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 ...

jianchileiliang的博客 189

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JAVA多线程快速入门

线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读...

冰丶heart 230

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【多线程】一、多线程快速入门

目录 一、进程与线程的区别 二、为什么要使用多线程?​ 三、常见创建线程的方式 3.1、继承Thread类 3.2、实现Runnable接口 3.3、匿名内部类 3.4、匿名内部类(Lambda创建) 四、启动线程方式以及优先级 多线程相信大家可能有一定的认知与了解,比方说百度云下小视频,或者迅雷下种子,一次性能开启多个任务,这就是一个典型的多线程。 一、进程与线程的区别 比...

qq_43227967的博客 540

(一)多线程快速入门

多线程快速入门学习目标有明确的学习目标,学起来会更有趣哦:线程与进程为什么要使用多线程?多线程应用场景多线程创建方式练习题线程生命周期面试总结一、线程与进程线程与进程的区别1、每个正在系统上运行的程序都是一个进程。 2、每个进程包含一到多个线程。 3、线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。 4、所以线程基本上是轻量级的进程,它负责在单个...

冷夜轩的博客 254
上一篇: Spring Boot2.0之注解方式启动Springmvc
下一篇: 守护线程和非守护线程
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值