java线程中start和run的区别详解_java

来源:脚本之家  责任编辑:小易  

thread.start()立即返回,然后启动新线程运行run()方法。thread.run()只是运行run()方法,运行完毕之后才返回。所以对于thread使用start()方法才是正确的方法。public class Main {public static void main(String[]args){MyThread thread=new MyThread();System.out.println("before invoke");thread.start();System.out.println("after invoke");}public static class MyThread extends Thread {public void run(){try {System.out.println("run start");Thread.sleep(1000);System.out.println("run end");} catch(Exception e){e.printStackTrace();}}}}输出:before invokeafter invokerun startrun end改成thread.run()之后输出:before invokerun startrun endafter invokewww.zgxue.com防采集请勿采集本网。

这篇文章主要介绍了java线程中start和run的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

而调用start方法是启动线程的标准方法,调用start以后就会启动一个独立的线程,该线程的任务就是百执行run中的所有逻辑,逻辑执行完成,度线程结束。JAVA多线程是JAVA编程语言的一大特性;自定义一个多

public class Test1 extends Thread { @Override public void run() { while (true) { System.out.println(Thread.currentThread().getName()); } } public static void main(String[] args) { Test1 test1=new Test1(); test1.run(); //输出结果main test1.start(); //输出结果Thread-0 }}

void run()If this thread was constructed using a separate start()Causes this thread to begin execution;the Java Virtual Machine calls the run method of this thread.

1.start

run 其实可以简单的理解为一个普通的方法。start是启动线程的方法 如果没有start()直接run也是不会报错的 但只是在当前线程里执行run。并没有在新线程中执行

start作用是启动一个新线程。

运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行

当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。start()不能被重复调用,它调用run()方法.run()方法是你必须重写的

start()使该线程开始执行,然后Java 虚拟机调用该线程的 run 方法。

2.run

run()就和普通的成员方法一样,可以被重复调用。

如果直接调用run方法,并不会启动新线程!程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到多线程的目的。

调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

区别:调用start方法实现多线程,而调用run方法没有实现多线程Start:用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。Run:run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • java中启动线程start和run的两种方法
  • java线程的start方法回调run方法的操作技巧
  • java 线程中start方法与run方法的区别详细介绍
  • java线程中start和run方法全面解析
  • java中thread线程start和run的区别
  • java基本教程之thread中start()和run()的区别 java多线程教程
  • java多线程start()方法原理解析
  • java实现四则混合运算代码示例
  • 详解fileinputstream读取文件数据的两种方式
  • springboot配置文件绑定实现解析
  • java中字符串拼接的一些细节分析
  • struts1和struts2的区别_动力节点java学院整理
  • mybatis如何配置连接池
  • java的super关键字与instanceof运算符使用方法
  • 最常用的1000个java类(附代码示例)
  • java 图片验证码的实现代码
  • java实现爬虫给app提供数据(jsoup 网络爬虫)
  • Java线程中run和start方法的区别
  • java线程中run 和start有什么区别
  • java线程中run和start方法的区别
  • Java线程中run和start方法的区别
  • Java线程中run和start方法的区别
  • Java线程中run和start方法的区别
  • Java线程中run和start方法的区别
  • java线程中run和start方法的区别
  • Java线程中run和start方法的区别
  • java线程中run和start方法的区别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页java中启动线程start和run的两种方法java线程的start方法回调run方法的操作技巧java 线程中start方法与run方法的区别详细介绍java线程中start和run方法全面解析java中thread线程start和run的区别java基本教程之thread中start()和run()的区别 java多线程教程java多线程start()方法原理解析java实现四则混合运算代码示例详解fileinputstream读取文件数据的两种方式springboot配置文件绑定实现解析java中字符串拼接的一些细节分析struts1和struts2的区别_动力节点java学院整理mybatis如何配置连接池java的super关键字与instanceof运算符使用方法最常用的1000个java类(附代码示例)java 图片验证码的实现代码java实现爬虫给app提供数据(jsoup 网络爬虫)java使double保留两位小数的多方java8 十大新特性详解java.net.socketexception: connjava写入文件的几种方法分享java环境变量的设置方法(图文教程java 十六进制与字符串的转换java list用法示例详解java中file类的使用方法javaweb实现文件上传下载功能实例java 字符串截取的三种方法(推荐java string 字符串常量池解析spring boot基于数据库如何实现简单的分布springboot集成elaticjob定时器的实现代码java中使用apache poi读取word文件简单示java dom4j方式生成xml的方法java版水果管理系统源码mybatis中#{}和${}的区别详解java字符串比较方法equals的空指针异常的java避免死锁的常见方法代码解析java实现批量修改txt文件名称的方法示例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved