首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么线程的start和run方法不返回任何东西?

线程的start和run方法不返回任何东西是因为它们是用于启动线程和执行线程任务的方法,并不需要返回结果。下面是对这个问题的详细解答:

线程是程序执行的基本单位,它可以在程序中独立运行,实现多任务并发执行。在Java中,线程的创建和启动通常通过创建Thread类的实例,并调用start方法来实现。

  1. start方法:
    • 概念:start方法用于启动一个新线程,并使其开始执行run方法中的任务。
    • 分类:start方法属于Thread类的方法,用于启动一个新线程。
    • 优势:通过start方法启动线程,可以实现多线程并发执行,提高程序的执行效率。
    • 应用场景:适用于需要并发执行的任务,如多线程下载、并行计算等。
    • 腾讯云相关产品:腾讯云提供了云服务器CVM、容器服务TKE等产品,可以用于部署和管理多线程应用。具体产品介绍请参考腾讯云官网:腾讯云产品介绍
  • run方法:
    • 概念:run方法是线程的执行体,包含了线程要执行的任务代码。
    • 分类:run方法属于Runnable接口的方法,需要在Thread类的构造方法中传入Runnable对象,并在run方法中实现任务逻辑。
    • 优势:通过实现Runnable接口并重写run方法,可以实现线程的任务逻辑与线程的启动和管理分离,提高代码的可维护性和复用性。
    • 应用场景:适用于需要将任务逻辑与线程管理分离的场景,如线程池、定时任务等。
    • 腾讯云相关产品:腾讯云提供了云函数SCF、容器服务TKE等产品,可以用于部署和管理基于Runnable接口的任务。具体产品介绍请参考腾讯云官网:腾讯云产品介绍

总结:线程的start和run方法不返回任何东西是因为它们的目的是启动线程和执行线程任务,而不是返回结果。通过调用start方法启动线程,线程会在后台执行run方法中的任务逻辑。这种设计可以实现多线程并发执行,提高程序的执行效率。在实际应用中,可以根据具体需求选择合适的线程启动方式,并结合腾讯云提供的相关产品进行部署和管理。

相关搜索:PyQt5.QThread的start()方法不执行run()方法为什么我的方法没有返回任何东西?新线程的thread.start()方法是否立即返回到当前线程?thread 类中的start() 和 run() 方法有什么区别?为什么class对象的class方法不返回meta类?泛型类中的方法不返回指定类型。为什么?为什么return语句不返回calAverage方法中的任何内容为什么hash a对a[:b]和a["b"]不返回相同的结果?为什么带有类和公共方法的操作不触发__construct()为什么我的promisify和jwt不返回值或错误?JavaFX 8如何传递和使用对不返回值的方法的引用?如果使用从方法返回的lambda,为什么事件取消订阅会起作用(“不泄漏”)?有没有一种简洁和惯用的方法来打印错误并返回,而不返回错误?为什么我的函数在声明返回时不结束(Node.js和Express.js)为什么CrudRepository和JpaRepositiory的findAll方法返回的数据类型不一样?在ios的getPhotos和getAlbums方法中,React原生摄像机胶卷不返回任何图像为什么我的主窗体冻结时,我使用清除文本框和追加文本方法“同时”?(多线程)当选择器使用XPath ()节点测试时,为什么Javax的text evaluate()方法不返回带有不间断空格的元素无法从团队中的get authtoken方法获取令牌,返回错误“在清单和iframe源中定义的应用程序资源不匹配”为什么spring-data-rest中的alps (或配置文件)路径返回json body和不匹配的头文件Content-Type: text/html?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入线程Thread类的start()方法和run()方法

每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。...在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。   第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。   第二是就绪状态。...二、start()方法 1、为什么需要start方法;它的作用是什么? start()方法来启动线程,真正实现了多线程运行。 start方法的作用就是将线程由NEW状态,变为RUNABLE状态。...总结: 通过实例1和实例和我们可以知道start方法是用于启动线程的,可以实现并发,而run方法只是一个普通方法,是不能实现并发的,只是在并发执行的时候会调用。...四、start()方法和run()方法源码解析(基于JDK1.7.0_40) public synchronized void start() { // 如果线程不是"就绪状态

3K00
  • 多线程 start 和 run 方法到底有什么区别?

    今天,栈长会详细介绍 Java 中的多线程 start() 和 run() 两个方法,Java 老司机请跳过,新手或者对这两个不是很理解的可以继续往下看。...而 Runnable 接口定义了唯一的一个 run() 方法,所以基于 Thread 和 Runnable 创建多线程都需要实现 run() 方法,是多线程真正运行的主方法。...类的方法,用来异步启动一个线程,然后主线程立刻返回。...那么你会问了,为什么要有两个方法,直接用一个 run() 方法不就行了吗!? 还真不行,如果直接调用 run() 方法,那就等于调用了一个普通的同步方法,达不到多线程运行的异步执行,来看下面的例子。...看完这篇,你应该对 start 和 run 方法有了一个大概的掌握吧,再也不怕面试官问你这两个的区别了吧!

    1.4K10

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

    1、线程的start()方法   start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程...然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。...Thread-1---1 Thread-1---2 Thread-1---3 总结   调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。...这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。...并且run()方法必须是public访问权限,返回值类型为void.。

    30330

    thread类中start()和run()方法的区别

    run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。...3,调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。...这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。...并且run()方法必须是public访问权限,返回值类型为void。...4,还有就是尽管线程的调度顺序是不固定的,但是如果有很多线程被阻塞等待运行,调度程序将会让优先级高的线程先执行,而优先级低的线程执行的频率会低一些。

    4.1K00

    Run和Start的区别,线程的生命周期,优先级,礼让和守护线程

    线程常用方法和线程的状态 线程的生命周期图,及其调用线程的方法会改变的状态 ?...调用run和start()的区别 package org.dance.day1; import org.dance.tools.SleepTools; /** * 线程调用 run 和 start...(){ ThreadRun thread = new ThreadRun(); thread.setName("run"); // 调用线程的Run方法...// 调用线程的Run方法 thread.start(); // 执行结果 // I am run and now the i = 90 } }...:   取值为1~10,缺省为5,但是线程的优先级并不可靠,不建议作为线程开发时候的手段,因为有的操作系统可能会忽略线程的执行优先级,所以开发中需要将这个不确定因素列如其中 设置线程的优先级方法,在源码中可以看见最小是

    36441

    「附数据结构资源」玩转java并发(六):深入线程Thread类的start()方法和run()方法

    每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。...在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。   第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。   第二是就绪状态。...二、start()方法 1、为什么需要start方法;它的作用是什么? start()方法来启动线程,真正实现了多线程运行。 start方法的作用就是将线程由NEW状态,变为RUNABLE状态。...总结: 通过实例1和实例和我们可以知道start方法是用于启动线程的,可以实现并发,而run方法只是一个普通方法,是不能实现并发的,只是在并发执行的时候会调用。...四、start()方法和run()方法源码解析(基于JDK1.7.0_40) 1 public synchronized void start() { 2 // 如果线程不是

    38820

    如何给run方法传参?如何处理线程的返回值?

    给run()方法传参实现的方式主要有三种 构造函数传参 成员变量传参 回调函数传参 如何实现处理线程的返回值 主线程等待法 优点:实现简单 缺点需要自己实现循环逻辑,循环时间自己无法精准控制 使用...Thread类的join()阻塞当前线程以等待子线程处理完毕 通过Callable接口实现:通过FutureTask Or 线程池获取 通过FutureTask方法实现机制或者说基础 1.FutureTask...),若call()没执行完毕会阻塞住,如果执行完会返回Callable实例返回值 线程池获取 原理和FurureTask差不多,通过线程池submit一个Callable实例会返回一个Future...Future也具有FutureTask相同的方法和功能 使用线程池的好处:``可以提交多个实现callable的类,让线程池并发处理, 方便管理 主线程等待法 join改造上面的主线程只需要替换那个...while循环即可 FutureTesk+Callable实现线程返回值 相同的Callable,线程池的实现

    2.7K30

    Android高级:内部类的理解,多态,run和start,wait和seelp,线程安全,堆和栈,synchronized 和volatile ,AsyncTask,Binder的机,view的原理

    Object类的equal和hashCode方法重写,为什么?...开启线程的三种方式 java有三种创建线程的方式,分别是继承Thread类、实现Runable接口和使用线程池 run()和start()方法区别 这个问题经常被问到,但还是能从此区分出面试者对Java...start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。...当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。...2、由于Service的Binder方法运行在线程池中,所以Binder方法不管是耗时还是不耗时都应该采用同步的方式,因为它已经运行在一个线程中了。

    7400

    某大型国企Java岗位面试题,你能做出几道?

    为什么呢? 这个问题深入探讨了Java内存模型(JMM)及其对多线程程序可见性和重排序的影响。...在多线程环境中,由于编译器优化、处理器优化以及运行时的JIT编译优化,操作的执行顺序可能会与代码中的顺序不同。这种优化可能会影响到变量的可见性和程序的执行顺序。 A. 程序无限循环,不输出任何东西。...这是在ready变量的更新对另一个线程可见,并且这个更新在number变量被设置为42之后被检测到的情况下可能发生的结果。 C. 不保证总能输出"42",有时可能不输出任何东西。 这是最准确的描述。...选择正确的选项。 A. new Dog() B. new Cat() C. myDog D. myCat 正确答案:B. new Cat() 为什么呢? 本题考察了Java中多态性的理解和应用。...B. new Cat() - 这是正确的选项。尽管Cat类重写了speak方法返回"Meow",但特定于Cat的方法purr返回"Purr"。

    34510

    Java 多线程(超详细)

    进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。...线程的启动和终止 线程的启动 • 线程的启动需要调用Thread的start方法,不能直接调用run方法,如果直接调用run方法相当于方法调用。...线程的终止 • 当run方法返回,线程终止,一旦线程终止后不能再次启动。 • 线程的终止可以调用线程的interrupt方法,但该方法不是最佳方法,最好是设置一个标记来控制线程的终止。...线程控制基本方法 • Thread类的有关方法(1) – void start():启动线程并执行对象的run()方法 – run():线程在被调度时执行的操作 – String getName...接口 Runnable和Callable的区别: 1、Callable规定的方法是call(),Runnable规定的方法是run(). 2、Callable的任务执行后可返回值,而Runnable

    29630

    -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),

    本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait()...2.建立子类对象的同时线程也被创建。 3.通过调用start方法开启线程。 创建线程方式二 实现Runnable接口 1.子类覆盖接口中的run方法。...启动一个线程是run()还是start()?它们的区别?        ...start();         run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用         start():启动线程,并由JVM自动调用run()方法 线程的调度和优先级 线程的调度...过时 •public void interrupt() 停止线程还可以通过定义循环控制标志来解决现成的停止问题 sleep()和wait()方法的区别         sleep():必须指时间;不释放锁

    59740

    Service和Thread的关系 Handler机制原因,主线程looper.loop()为什么不阻塞主线程 Service不会阻塞: 内存溢出和内存泄漏的区别、产生原因以及解决方案:

    Service和Thread的关系 其实大家不要把后台和子线程联系在一起就行了,这是两个完全不同的概念。Android的后台就是指,它的运行是完全不依赖UI的。...当然会,但是我们可以在Service中再创建一个子线程,然后在这里去处理耗时逻辑就没问题了。 既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢?...Handler机制原因,主线程looper.loop()为什么不阻塞主线程 Handler,Message,looper 和 MessageQueue 构成了安卓的消息机制,handler创建后可以通过...sendMessage 将消息加入消息队列,然后 looper不断的将消息从 MessageQueue 中取出来,回调到 Hander 的 handleMessage方法,从而实现线程的通信。...从两种情况来说,第一在UI线程创建Handler,此时我们不需要手动开启looper,因为在应用启动时,在ActivityThread的main方法中就创建了一个当前主线程的looper,并开启了消息队列

    10210

    怎么查看线程的状态及interrupt优雅的关闭线程和interrupt()、interrupted()、isInterrupted()的作用以及区别在哪?

    ").start(); } static class BlockClass extends Thread{ public void run(){ synchronized(BlockClass.class...所以我可以强制去关闭线程:线程提供一个stop方法,该方法不建议使用,已经过时了!! 因为stop是强行关闭线程,线程里面的任务都不在执行,不管线程的任务是否执行成功与否,就算执行到一半也会强制关闭!...所以线程肯定有2种状态 初始(NEW) 新创建了一个线程对象,但是没有调用start()方法 终止(TERMINATED) 这个线程执行完毕 除了这2种状态外,线程还有以下几种状态 运行(RUNNABLE...) 我们线程开启是需要start 的,所以初始化后,有个运行状态 等待(WAITING) 进入该状态的线程需要等待其他线程做出一些特定动作,线程进入了这个状态一般调用了 Object.wait()...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    48930

    怎么查看线程的状态及interrupt优雅的关闭线程和interrupt()、interrupted()、isInterrupted()的作用以及区别在哪?

    ").start(); } static class BlockClass extends Thread{ public void run(){ synchronized(BlockClass.class...所以我可以强制去关闭线程:线程提供一个stop方法,该方法不建议使用,已经过时了!! 因为stop是强行关闭线程,线程里面的任务都不在执行,不管线程的任务是否执行成功与否,就算执行到一半也会强制关闭!...* The thread has completed execution. */ TERMINATED; } 其实我们想一下,任何东西的生命周期都是开始与死亡!!...所以线程肯定有2种状态 初始(NEW) 新创建了一个线程对象,但是没有调用start()方法 终止(TERMINATED) 这个线程执行完毕 除了这2种状态外,线程还有以下几种状态 运行(RUNNABLE...) 我们线程开启是需要start 的,所以初始化后,有个运行状态 等待(WAITING) 进入该状态的线程需要等待其他线程做出一些特定动作,线程进入了这个状态一般调用了 Object.wait()

    34730

    【Java线程基础】01.线程实现方式千万种,为何独终于你一种.md

    run() 方法的实例传到 Thread 类中调用start()方法就可以启动线程了。...创建线程,Runnable 创建线程是无返回值的,而 Callable 和与之相关的 Future、FutureTask,它们可以把线程执行的结果作为返回值返回,如代码所示,实现了 Callable...详细内容我们这里先不讨论。 其实第3、4种方式本质也是实现Runnable接口。 线程实现的本质是什么?为什么说线程只有一种实现?...经过上面的讨论,我们可以得知,第2、3、4种的本质都是通过实现Runnable接口来触发run()方法来实现多线程功能的。那Thread和Runnable两种的本质是什么呢?...[] args) { new ThreadExtends().start(); } } 这个调用start()方法的时候,由于Thread 中的run()方法被 ThreadExtends

    17230

    Android多线程编程——线程基础

    和等待状态不同的是,它是可以在指定的时间自行返回的。 Terminated 终止状态。 表示当前线程已经执行完毕。...导致线程终止有两种情况: 第一种就是run方法执行完毕正常退出;第二种就是因为没有一个捕获的异常而终止了 run方法,导致线程进入了终止状态。...线程创建后,调用Thread 的 Start方法,开始进入运行状态,当线程执行 wait 方法后,线程进入等待状态,进入等待状态的线程需要其他线程通知才能返回运行状态。...但调用 Future的 get() 方法以获取结果是,当前线程就会阻塞,直到 call 方法返回结果。...run方法执行完毕,或者在方法中出现没有捕获的异常时,线程将终止。

    35930

    快速掌握并发编程---基础篇

    面试的时候时长会被问start方法和run方法的区别,笔试中遇到的概率是非常高的。start方法是启动一个线程,而run方法是普通的实例方法调用而已。...使用` ExecutorService、Callable、Future `实现带返回结果的多线程 从继承Thread类和实现Runnable接口可以看出,上述两种方法都不能有返回值,且不能声明抛出异常。...线程启动原理 我身边很多小伙伴对于线程的启动,还是处于朦胧的状态,说不懂但是知道调用start方法,就启动了线程。但是为什么不是调用run方法呢?这可能是很多人都不知道的。...* * 结果是 调用start方法的当前线程 和 执行run方法的另一个线程 同时运行。...虽然 api 仍然可以调用,但是和其他的线程控制方法如 suspend、resume 一样都是过期了的不建议使用,就拿 stop 来说,top 方法在结束一个线程时并不会保证线程的资源正常释放,因此会导致程序可能出现一些不确定的状态

    32020

    Java多线程面试题(面试必备)

    创建线程 3.1 创建线程的四种方式 3.2 Runnable接口和Callable接口有何区别 3.2 run()方法和start()方法有和区别 3.3 为什么调用start()方法会执行run()...相同点: Runnable和Callable都是接口 都可以编写多线程程序 都采用Thread.start()启动线程 不同点: Runnable接口run方法无返回值,Callable接口call方法有返回值...3.2 run()方法和start()方法有和区别 每个线程都是通过某个特定的Thread对象对于的run()方法来完成其操作的,run方法称为线程体,通过调用Thread类的start方法来启动一个线程...start()方法用于启动线程,run()方法用于执行线程的运行代码,run()可以反复调用,而start()方法只能被调用一次。 start()方法来启动一个线程,真正实现了多线程的运行。...3.3 为什么调用start()方法会执行run()方法,为什么不能直接调用run()方法 这是一个常问的面试题,new Thread,线程进入了新建的状态,start方法的作用是使线程进入就绪的状态,

    94620
    领券