Java线run()与start()方法的区别

thread类中start()和run()方法的区别 1,start()方法来启动线程,真正实现了多线程运行,这时无需等待。run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。... 阅读详情

run():只有主线程一条执行路劲

start():多条执行路径,主线程和子线程交替执行

package com.lidongyang.demo01;

//创建线程方法一:继承Thread类,重写run()方法
public class TestThread extends Thread {
    public static void main(String[] args) {
        //main主线程,

        //创建一个Thread对象
        TestThread testThread = new TestThread();

        //调用start()方法开启线程
        //testThread.run();   //run方法顺序执行,start并发执行
        testThread.start();
        for (int i = 0; i < 2000; i++) {
            System.out.println("主线程--"+i);
        }
    }

    @Override
    public void run() {
        //run方法线程体
        for (int i = 0; i < 20; i++) {
            System.out.println("子线程=="+i);
        }
    }


}
  • 继承Thread类
    • 子类继承Thread类具备多线程能力
    • 启动线程:子类对象.start()
    • 不建议使用:避免OOP单继承局限性
  • 实现Runnable接口
    • 实现接口Runnabe具备多线程能力
    • 启动线程:传入目标对象+Thread对象.start()
    • 推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
package com.lidongyang.demo01;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

//练习Thread,实现多线程同步下载图片
public class TestThread02 implements Runnable {

    private String url;
    private String name;
    public TestThread02(String url,String name){
        this.url = url;
        this.name = name;

    }


    //下载图片的线程体
    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下载了文件名为:"+name);
    }

    public static void main(String[] args) {
        //定义
        TestThread02 t1 = new TestThread02("https://profile.csdnimg.cn/F/9/9/1_qq_34831748","图片01.jpg");
        TestThread02 t2 = new TestThread02("https://profile.csdnimg.cn/F/9/9/1_qq_34831748","图片02.jpg");
        TestThread02 t3 = new TestThread02("https://profile.csdnimg.cn/F/9/9/1_qq_34831748","图片03.jpg");

        //start()为开启线程的方法
        new Thread(t1).start();
        new Thread(t2).start();
        new Thread(t3).start();


    }
}

//下载器
class WebDownloader{
    //下载方法
    public void downloader(String url,String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("IO异常,downloader方法出现问题");
        }
    }
}

 

UDS服务应该支持哪些否定响应码 UDS服务应该支持哪些否定响应码所有服务都需支持的否定响应码具体的服务需要支持的否定响应码否定响应码定义及其取值 USD诊断服务的否定响应中包含有导致否定响应原因的编码,称为否定响应码(NRC, Negative Response Code)。否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。 0x01 – 0x7F:诊断通信相关的否定响应码。 0x80 – 0xFF:服务器收到诊断服务请求时,由于某些条件不满足要求而给出的否定 阅读详情

相关推荐

别再只测电压了!用STM32G474的ADC玩点花的:过采样提升精度与多通道扫描实战

本文深入探讨了STM32G474系列单片机的ADC高级应用,包括硬件过采样技术实现16位精度和多通道扫描结合DMA的自动数据采集方案。通过详细的配置步骤和实战案例,帮助开发者突破传统电压测量局限,提升信号采集精度和系统效率,适用于工业监控、医疗设备等高精度应用场景。

weixin_42647395的博客 238

start()方法和run()方法

一、start()方法 1、start()方法含义 1、启动新线程。当我们执行了start()方法之后这个线程不一定会立刻执行,其实是在告诉jvm中的线程调度器在合适的时间去启动。例如:我们可能会创建两个线程,分别是线程1和线程2,但线程1先调用start()方法,线程2后调用,缺发现线程2先执行,这其实是不违背启动顺序的。也就是说调用start()方法的顺序并不能决定执行的顺序。 2、一个...

我是太阳 4885

51雾化器实现

1. 雾化器简介 雾化器是将试液雾化的一种器械。雾化器是原子化系统的重要部件,其性能对测定的精密度和化学干扰等产生显著影响。因此要求雾化器喷雾稳定、雾滴细小、均匀和雾化效率高。雾化器的类型有超声雾化器,空气压缩式雾化器,网式雾化器。超声雾化器因其价格合适,适合家用,被广泛应用于加湿器,香薰机等各种小家电,也在医疗领域有很多的应用。家用雾化器的主要器件是一枚雾化片。 家用雾化器分为两种不同类别雾化片,实孔雾化片和微孔雾化片,这两种的喷雾方法和工作原理是有所不同的。不同的雾化片需要特定的频率才能工作。 实孔雾

qq_42415953的博客 2万+

java线程run与start

java线程理解

tangwang5346的专栏 719

[南大ICS-PA2] 字符串处理函数和printf实现

[南大ICS-PA2] 程序、运行时环境与AM 字符串处理函数和printf实现

qq_42474104的博客 2987

一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析

该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。

master_hunter的博客 1万+

Java线程的run()和start()有什么区别?

Java线程的run()和start()有什么区别?

javamyfriend的博客 1447

基于VisionMaster实现数据实时存储至MySQL (二)

摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?

haier123888的博客 226

java线程中start()和run()的区别

java线程中start()和run()的区别

weixin_68105699的博客 4337

【Zephyr存储专题】09_LittleFs文件系统操作

本文档旨在为开发者介绍Zephyr下Littlef's文件系统相关配置使用指南

zero的博客 3246

DataX对接数据如何在ODS加密脱敏数据(插件开发)

datax对接mysql数据,对姓名只保留姓,名变成**。对这种简单的脱敏,可以不用修改datax源码,直接在配置文件上实现。

大模型大数据攻城狮的专栏 994

【Java】多线程 Start() 与 run() (简洁实操)

简明教程,实操多线程 start 与 run,了解并行并发与串行区别

麻辣香蝈蝈的博客 2140

Android 13.0 USB 麦克风音频采集优化:解决延时、杂音和无声问题

摘要:本文针对Android智能会议设备中USB麦克风存在的三大问题(录音延时、概率性杂音和无声)进行了深入分析和优化。通过预填充静音帧降低90%启动延时,分离采集/播放互斥锁消除杂音,采用持久化配置解决无声问题,并新增状态通知机制提升用户体验。优化后测试显示:录音延时从1200-2000ms降至100-200ms,故障率降至0%,CPU占用降低30%。该方案适用于各类USB音频设备和视频会议系统,为低延时音频采集提供了可靠解决方案。

ip0417的博客 229

从零起步学习并发编程 || 第一章:初步认识进程与线程

进程=资源隔离单位,线程=执行单位。多线程比多进程轻量,但并发需要注意竞态、可见性和原子性问题。

ze15829163918的博客 718

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

run()方法和start()方法的区别

一、start()和run()方法的区别: 1、start方法用来启动相应的线程; 2、run方法只是thread的一个普通方法,在主线程里执行; 3、需要并行处理的代码放在run方法中,start方法启动线程后自动调用run方法; 4、run方法必须是public的访问权限,返回类型为void。 二、进一步的理解 线程的run()方法是由java虚拟机直接调用的,如果我们没有...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

线程start() 和 run()的区别

首先需要知道线程的几个状态以及多线程工作方式。 new 一个Thread,线程进入了新建状态,调用start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到 时间片 后就可以开始运行了。start() 会执行线程的相应准备工作,然后自动执行run() 方法的内容,这是真正的多线程工作。 而直接执行run() 方法,会把run 方法当成一个main 线程下的普通方法去执行,并不会在某个线程中执行它,所以这并不是多线程工作。 总的来说:调用start 方法方可启动线程并使线程进入就绪状态,而run

weixin_38568503的博客 8484

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

线程的 run() 和 start() 有什么区别?

线程的 run() 和 start() 有什么区别? 调用 start() 方法是用来启动线程的,轮到该线程执行时,会自动调用 run();直接调用 run() 方法,无法达到启动多线程的目的,相当于主线程线性执行 Thread 对象的 run() 方法。 一个线程对线的 start() 方法只能调用一次,多次调用会抛出 java.lang.IllegalThreadStateExcept...

ConstXiong 2万+

Java中线程启动:start()与run()方法的区别

线程是并发执行的基本单位,而`Thread`类则是实现多线程编程的核心。在使用`Thread`类或其子类创建线程时,`start()`和`run()`是两个至关重要的方法,但它们的作用和调用方式却大相径庭。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6602

Thread的run()与start()的区别

1、start()、run()方法的定义区分 start():   用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止。然后CPU再调度其它线程。 一旦得到cpu时间片,就开始执行r...

追逐消失的记忆 8693

start()和run()方法的区别

Java 线程一直是一个比较容易困扰的地方,首先,我们来认识下怎样生存线程。 认识 Thread 和 Runnable java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出

dada360778512的专栏 3万+

【JAVA】线程的run()和start()有什么区别?

run() 方法:start() 方法:区别总结:结语我的其他博客在Java中,线程的 和 是与多线程编程相关的两个方法,它们有着不同的作用和用法。 方法是 类的一个普通方法,用于定义线程的主体逻辑。当直接调用 方法时,该方法会在当前线程的上下文中执行,而不会创建新的线程。直接调用 方法,不会实现多线程的并发执行,而只是在当前线程中按照顺序执行 方法的内容。 方法: 方法是 类的一个

AliceNo的博客 5007

Java中的run()方法和start()的区别

一、区别 Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论哪种方法都可以通过start()和run()方法来启动线程,下面就来介绍一下他们的区别。 start方法: 通过该方法启动线程的同时也创建了一个线程,真正实现了多线程。无需等待run()方法中的代码执行完毕,就可以接着执行...

Mr.Yin 1万+

Java run()与start()区别

调用start方法方可启动线程,真正实现了多线程;而run方法只是thread的一个普通方法调用还是在当前线程里执行,并没有增加线程的数量。 start() 用start()来启动线程,真正实现了多线程,就算出现start()方法也是继续执行下面的代码而不需等待run()体代码执行完,如下代码无需等待pong()方法输出B而是继续执行下面的输出A public class Test { p...

zero 5163

线程的 run()和 start()有什么区别?

1.start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体中的代码执行完毕而直接继续执行后续的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里的run()方法称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。 2.run(): run()方法只是类的一个普通方法而已。run方法相当于线程的任务处理逻辑的入口方法,就是线程体,它

斧头湖懒客 5711

java中thread的start()和run()的区别

<br />java中thread的start()和run()的区别:<br />1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:<br />通过调用Thread类的start()方法来启动一个线程,<br />这时此线程是处于就绪状态,<br />并没有运行。<br />然后通过此Thread类调用方法run()来完成其运行操作的,<br />这里方法run()称为线程体,<br />它包含了要执行的这个线程的内容,<br />Run方

wangyangkobe的专栏 2万+

Thread类的start()方法和run()方法的区别

目的不同start()方法用于启动线程,而run()方法定义了线程执行的任务。执行方式不同:start()方法导致run()方法在新线程中异步执行(下面有解释),而直接调用run()方法则是在当前线程中同步执行。线程状态影响:调用start()方法会改变线程的状态,并启动线程的执行流程;而调用run()方法则不会。使用限制:start()方法在一个线程的生命周期中只能被调用一次;而run()方法则可以被任意次调用(尽管直接调用通常不符合多线程编程的初衷)异步执行。

2302_79968236的博客 1498
上一篇: Dos命令
下一篇: Tomcat控制台中文乱码分析
bulosli
博客等级 码龄11年 22粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值