QuarkXPress CGLib动态代理 joomla ios7 pygame vue特点 多商户商城模板 java三维数组 webapp打包 kubernetes实战 python基础 python平方函数 python创建数据库 python中import用法 java队列 java编程 java继承关键字 java中tostring javaif语句 java中tostring方法 java获取当前时间 java多线程处理 java泛型的使用 信息系统项目管理师教程 服务器操作系统下载 微信客户管理系统 fdisk下载 python缩进规则 js切割字符串 ps怎么画漫画 小程序游戏源码 linux格式化硬盘 截取字符串 fireworks 微信群群发软件 电脑内录软件 图片批处理 只狼二段跳 flash引导层 移动硬盘检测工具
当前位置: 首页 > 学习教程  > 编程语言

java中 run()和start()区别

2020/10/16 18:24:50 文章标签:

start()方法它的作用是启动一个新线程,run()就和普通的成员方法一样,可以被重复调用。 这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start()方法被用来启动新创建的线程,而且start()内部 调用了run()…

start()方法它的作用是启动一个新线程,run()就和普通的成员方法一样,可以被重复调用。

这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start()方法被用来启动新创建的线程,而且start()内部 调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

start方法:

通过该方法启动线程的同时也创建了一个线程,真正实现了多线程。无需等待run()方法中的代码执行完毕,就可以接着执行下面的代码。此时start()的这个线程处于就绪状态,当得到CPU的时间片后就会执行其中的run()方法。这个run()方法包含了要执行的这个线程的内容,run()方法运行结束,此线程也就终止了。

run方法:

通过run方法启动线程其实就是调用一个类中的方法,当作普通的方法的方式调用。并没有创建一个线程,程序中依旧只有一个主线程,必须等到run()方法里面的代码执行完毕,才会继续执行下面的代码,这样就没有达到写线程的目的。
而run方法是业务逻辑实现的地方,本质上和任意一个类的任意一个成员方法并没有任何区别,可以重复执行,被一个线程反复调用,也可以被单独调用

总结一下:
1.start() 可以启动一个新线程,run()不能
2.start()不能被重复调用,run()可以
3.start()中的run代码可以不执行完就继续执行下面的代码,即进行了线程切换。直接调用run方法必须等待其代码全部执行完才能继续执行下面的代码。
4.start() 实现了多线程,run()没有实现多线程。


本文链接: http://www.dtmao.cc/news_show_300415.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?