线程为什么调用start()而不是直接调用run()
run()方法只是一个类中的普通方法,直接执行和普通的方法没有设么两样
start()方法则不同,它首先做了创建线程等一系列工作,然后调用行的run()方法
新建线程
Thread thread = new Thread();
thread.start();
这样就开启了一个线程。
有一点需要注意的是
Thread thread = new Thread();
thread.run();
直接调用run方法是无法开启一个新线程的。
start方法其实是在一个新的操作系统线程上面去调用run方法。换句话说,直接调用run方法而不是调用start方法的话,它并不会开启新的线程,而是在调用run的当前的线程当中执行你的操作。
Thread thread = new Thread("t1")
{
@Override
public void run()
{
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName());
}
};
thread.start();
如果调用start,则输出是t1
Thread thread = new Thread("t1")
{
@Override
public void run()
{
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName());
}
};
thread.run();
如果是run,则输出main。(直接调用run其实就是一个普通的函数调用而已,并没有达到多线程的作用)
线程为什么调用start()而不是直接调用run()相关推荐
- java线程立刻执行_Java 线程调用start()后会立即执行run()方法吗?
别想当然 问题 Java 线程调用start()后会立即执行run()方法吗? 我们在开发中,经常和线程打交道,有些东西总是司空见惯,想当然地认为某些事情理所当然... 但是今天偶然发现一个有趣的现象 ...
- 启动线程时使用 start 而不是 run
今天团队里面的妹子问阿粉,为什么在启动线程的时候,都使用 start 方法,而不是 run 方法呢 还好阿粉平时一直有在学习,要不真的被妹子问住了 在多线程中,如果想让一个线程启动,你使用的方法一定是 ...
- 调用链系列四:调用链上下文传递
在之前的调用链系列文章中,我们已经对调用链进行了详细介绍,相信大家已经对调用链技术有了基本的了解. 其实,在调用链的绘制过程中,调用链上下文的传递非常值得关注.各个节点在获取上层上下文后生成新的上下文 ...
- mysql plugin 调用_MySQL插件接口的调用方式
author:sufei 版本:8.0.16 一.简介 首先简单说明一下插件的实现原理 在程序的合适位置(挂钩处)安插相应的函数指针,相应的结构类似:if (fun_ptr != null) fun_ ...
- java的传值调用什么_Java的传值调用
(本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 引子 之所以写这篇文章是因为前些天写了一篇<Java中真的只有值传递么?>探讨了网上关于Java只有值传递的说法,当时 ...
- 在php中调用java接口吗,php 调用 java 接口
php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...
- Jawin –Java/Win32互动项目 可调用DLL及COM的调用项目
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Jawi ...
- matlab 调用mex,从MATLAB中调用MEX中的C类方法
AFAIK,没有简单的方法可以做到这一点,因为mexFunction接口相当扁平.但是,我可以想到一些不同的解决方法,可以让你接近.根据您的需求选择最佳的一个. >最简单的方法是在mex函数中创 ...
- HTTP 调用 WebService、CXF 动态调用 WebService
概述 Web Service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用 ...
最新文章
- mysql 查看编码方式_Mysql查看编码方式专题
- MySQL 递归查询 当前节点及子节点
- 以弹窗形式打开页面_“弹窗广告”肆意而为!扰民?还可能侵权!
- 支持向量机总结(SVM)
- 全Delphi代码实现安卓扫码程序
- 厉害了网页扫码,所有方法都给你总结到这了,赶紧收藏
- python音频识别_音频识别和比较
- Taro小程序生成二维码保存本地
- Win10(21h2)十一代i7,HUD750,打驱动一直重启
- db2 创建实例,创建数据库,创建表
- “构建之法”--第三次作业:原型设计
- 计算机专业创新创业培养,中职计算机专业学生创新创业能力培养思考
- 双线双IP空间或者服务器域名解析说明
- 怎样把ICO图标改成圆形的?
- 国内五大抗DDoS服务
- 不对等的爱情并不长久
- 【疯狂诗词大会小程序2.0】功能模块+前端+诗词答题小程序+内置数千道题目+开箱即用
- 计算机课小组主题作业,计算机应用课程小组学习法的实践
- POI中设置Excel单元格格式样式(居中,字体,边框,背景色、列宽、合并单元格等)
- xjoi1.4行李托运
热门文章
- android 添加日程失败,Andriod向系统日历添加日程
- mysql中group concat_mysql中group_concat()函数的使用方法总结
- 2019手机浏览器排名_浏览器排行榜2019年1月浏览器市场份额排名
- SpringBoot开发案例之整合Dubbo分布式服务
- python之vscode中手动选择python解释器(mac)
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- Spring Data JPA
- iOS中的UIAlertView之新方法(弹出警告框)
- Spark(四) -- Spark工作机制
- 【数据安全案例】车管信息再遭窃取,数据安全缺乏保障