博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程中start()和run()的区别
阅读量:7192 次
发布时间:2019-06-29

本文共 834 字,大约阅读时间需要 2 分钟。

每个线程都有要执行的任务。线程的任务处理逻辑可以在Tread类的run实例方法中直接实现或通过该方法进行调用,因此

run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。

而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

下面看一个例子:

 

1 /** 2  * run()相当于线程的任务处理逻辑的入口方法 3  * start()的作用是启动相应的线程 4  * @author yiRain 5  * 6  */ 7 public class startAndRun { 8     public static void  main(String[] args) { 9         Thread t = new Thread(){10             public void run(){11                 world();12             }13         };14         15         t.start();16         //t.run();17         System.out.print(" Hello ");18     }19     20     static void world(){21         System.out.print(" world ");22     }23 24 }

 

 

输出结果:

 

 相应的调用t.run(),只是调用一个实例的方法而已,并未启动线程,因此run()会被立即执行

输出结果:

 

转载于:https://www.cnblogs.com/yiRain1992/p/9079989.html

你可能感兴趣的文章
node.js
查看>>
程序员学习网站
查看>>
odoo开发笔记:Server+Action服务器动作自动触发执行
查看>>
02-CSS基础与进阶-day5_2018-09-03-22-10-39
查看>>
Krajee 文件上传
查看>>
[深入JUnit] 测试运行的入口
查看>>
.Net转Java自学之路—基础巩固篇十五(IO)
查看>>
CRUD操作
查看>>
C#和VB新版本的最新特性列表
查看>>
centos部署airflow工作流, 本地web界面不显示
查看>>
_itoa _itow _itot atoi atof atol
查看>>
想说的话
查看>>
前端静态资源版本更新与缓存之——通过gulp 在原html文件上自动化添加js、css版本号...
查看>>
c++ sizeof
查看>>
摘录:测试各阶段的意义
查看>>
成长型思维模式Not yet
查看>>
Dell PowerEdge服务器RAID卡驱动下载
查看>>
安装Stomp扩展时错误提示error: 'zend_class_entry' has no member named 'default_properties'
查看>>
构建之法第六、七章读后感
查看>>
三类人喝豆浆会要命
查看>>