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

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

run没有启新的线程,start方法才会调用Thread的native的start0方法,start0会调用run方法,开启新的线程,博主这么做,不是多线程顺序执行,而是把业务阻塞在主线程里。请打印:Thread.currentThread().getId(),会发现主线程ID和run里的ID是相同的;如果调用start方法,就不会相同了。

 

开启新的线程不是run方法做的,是Thread的native方法start0做的,start0在底层请求JVM分配资源,然后start0会调用你重写的Runnable实例的run方法。Runnable是一个接口,这个接口只有一个方法run,Thread类就实现了这个接口。

所以Java里创建线程都必须要实现这个接口,也就是他们都是Runnable实例。只是Runnable实例并不会启动新的线程,必须调用Thread的start方法,才会启动新的线程。可以这么写:new Thread(Runnable).start()。

 

 

 

转载于:https://www.cnblogs.com/heartstage/p/3418779.html

你可能感兴趣的文章
Swift - UIView,UItableView,Cell设置边框方法
查看>>
jdbctemplate
查看>>
Centos7安装mysql-5.7.19
查看>>
ios中的coredata
查看>>
WPF控件库:文字按钮的封装
查看>>
N1 语法单词
查看>>
[转载]DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性
查看>>
[zz]使用thrift做c++,java和python的相互调用
查看>>
使用debootstrap 命令
查看>>
folly 相关库学习
查看>>
PHP中magic_quotes_gpc动态关闭无效的问题
查看>>
(转)使用NuGet管理项目库
查看>>
17行为型模式之命令模式
查看>>
mac 下快捷键
查看>>
假期作业6-10
查看>>
50-02 字符流中第一个不重复的字符( 时间空间效率的平衡)
查看>>
position中static、relative、absolute、fixed的分析
查看>>
computer专业术语总结
查看>>
为Google Reader守夜。。。
查看>>
20165235我期望的师生关系
查看>>