java中thread线程start和run的区别
发布时间:2023-09-30 13:12:16
标签:java,thread,线程
最近看到一个题目,代码如下:
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.println("ping");
}
static void pong() {
System.out.println("pong");
}
问,结果会输出什么?
我运行了很多次,结果都是pong ping。后来终于发现了关键点所在,线程对象t,调用的不是start()方法,而是run()方法。后来我开断点模式debug,发现调用run()方法,整个程序只有一个线程,而调用start()方法之后,程序就会多出一个线程。这时才有和主线程争cpu,可能出现多种结果的情况,但由于下面输出方法很快就被执行了,所以基本上都是“ping pong”的输出。
所以run()和start()的区别就是:
run()是Runnable接口中定义的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的。
而start()则是线程开始运行的标志,当这个方法被调用后,程序中才会多出一个独立的线程,接着便是执行run()方法。
所以我觉得,自己要写单独的线程,最好还是继承Thread来做,如果是实现接口的话,到主线程里,还是要new Thread(new YourRunnableClass())来调用,感觉很不方便。


猜你喜欢
- Mybatis-Spring当我们使用mybatis和spring整合后为什么下面的代码可以运行?一个问题:我就写了个mapper接口为什么
- Android Studio 打包 jar 及 aar 包创建工程 New -> Module -> Library在gradl
- 本文章向大家介绍JAVA爬取天天基金网数据,主要包括JAVA爬取天天基金网数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参
- 什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作。
- SpringEL表达式取值一般是${var}方式取值, 见于application.properties和@Value("${va
- Spring boot + Spring data jpa + Thymeleaf批量插入 + POI读取 + 文件上传pom.xml:&l
- *注:可以用 adb logcat > 路径/文件名 来保存,此命令执行之时起的全部日志信息到一个文件里,ctrl + C 结束日志输
- 自定义注解实现接口幂等性方式近期需要对接口进行幂等性的改造,特此记录下。背景在微服务架构中,幂等是一致性方面的一个重要概念。一个幂等操作的特
- Unity中利用材质自发光实现物体闪烁效果,供大家参考,具体内容如下补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在
- 本人刚参加工作,面试的时候遇四道笔试题,其中就有这道多线程有序读取文件的题目,初看时拿不准,感觉会,又感觉不会。于是放弃了这道题,今天闲下来
- 一种可以设置滑动动画的控件,只显示一行布局,在布局文件中的ViewFlipper控件中顺序写好每一行的布局(1).MainActivity.
- rocketmq client 日志的问题处理使用rocketmq后,默认会在{user.home}\logs\rocketmqlogs 目
- 文章导读本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结
- 游戏界面程序代码using System;using System.Collections.Generic;using System.Com
- 项目地址: GITHUB (本地下载)java mybatis 多表查询简介实现简单的实体类操作多表, 首先你的项目是
- 简介因为目前做的项目查询提供的接口都使用GraphQL替代典型的REST API,所以有必要去对它进行了解和源码的阅读。本篇主要大致了解下G
- 为什么要前后端分离?以Java Web项目为例,在传统的开发模式中,前端代码(Html、js、css)写在JSP中,甚至JSP中嵌入Java
- 本文实例为大家分享了java实现酒店管理系统的具体代码,供大家参考,具体内容如下要求:【酒店管理系统】HotelSystem.java某酒店
- Android Q 禁止获取 IMEI 和设备序列号;官方的解决方案是这样:https://developer.android.com/tr
- ztree生成树状图ztree官网前台导入js和css包下载地址前端页面 ztree.jsp<%@ page contentType=