文档章节

thread的start()和run()

骑牛找牛
 骑牛找牛
发布于 2014/02/01 17:05
字数 527
阅读 52
收藏 0

run()方法,用于封装线程运行的任务代码。直接用创建的线程对象调用,

并没有产生新的线程,仅仅是当前正在运行的线程(如,主线程)在执行run方法.


start()方法,共有两个作用,1,开启了当前线程,也就是说,

当前程序又多了一条执行路径和当前线程(主线程)并发执行。

而run()方法会被新开启的线程运行。2,调用线程的run()方法。


Thread对象的run()方法在一种循环下,使线程一直运行,直到不满足条件为止,在你的main()里创建并运行了一些线程,调用Thread类的start()方法将为线程执行特殊的初始化的过程,来配置线程,然后由线程执行机制调用run()。如果你不调用start()线程就不会启动。


 


 


因为线程调度机制的行为是不确定的,所以每次运行该程序都会有不同的结果,你可以把你的循环次数增多些,然后看看执行的结果,你会发现main()的线程和Thread1是交替运行的。

4.还有就是尽管线程的调度顺序是不固定的,但是如果有很多线程被阻塞等待运行,调度程序将会让优先级高的线程先执行,而优先级低的线程执行的频率会低一些。


 


 


线程的启动是比较复杂的,需要为线程分配资源,它的START方法被调用时系统才会为线程分配资源。

你上面调用线程的run方法只能算普通的方法调用一样,得运行完run里面的代码整个程序才能往下进行,而如果调用start方法,线程和MAIN方法就会抢资源,打印的语句会交替出现,你把线程里的循环次数加到300,试一下依次调run、start和两次都调start方法时所出现的情况应该能看出点端倪~~~


© 著作权归作者所有

骑牛找牛
粉丝 2
博文 28
码字总数 29263
作品 0
常德
私信 提问
java多线程方法

java多线程方法 进程是系统进行资源管理的基本单位; 线程是进程中独立的子任务 在使用多线程技术时,代码的运行结果与代码执行顺序或调用顺序是无关的 java是单继承不支持多继承,所以有run...

writeademo
2016/12/27
4
0
线程Thread类的start()方法和run()方法

一、初识 java的线程是通过类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法来完成其操作的,...

sihailoveyan
2018/05/26
0
0
java多线程 --run()和Start()的区别

Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括: start() 和 run()的区别说明 start() 和 run()的区别示例 start() 和 run()相关源码(基于JDK1.7.0_...

Jasonisoft
2016/05/30
0
0
java 中两种多线程的区别,start方法和run方法的启动区别

直接上代码看的更清晰: 运行发现结果很有规律,先第一个对象执行,然后第二个对象执行,并没有相互运行。在JDK的文档中可以发现,一旦调用start方法,则会通过JVM找到run方法。下面启动sta...

SundyIT
2016/04/21
44
0
有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果

1、 有4个线程A、B、C、D,分别打印1、2、3、4,请同时启动他们,但是要求按照1234的顺序输出结果。 public class TestABCThread3 { private Object lock = new Object(); private int coun...

不爱吃鱼的喵
2015/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springmvc集成cas,并解决前后端分离情况

1.最近项目需要集成已经存在的cas系统。 但是目前已集成的系统都是jsp。而我们项目是前后端分离开发(伪),没有分开部署。 2.cas原理就不介绍了 网上例子很多。基本都是使用302重定向实现的...

起名字什么的太麻烦了
37分钟前
3
0
HDFS-原理

1. 写操作

叶枫啦啦
今天
2
0
聊聊elasticsearch的MembershipAction

序 本文主要研究一下elasticsearch的MembershipAction MembershipAction elasticsearch-6.7.1/server/src/main/java/org/elasticsearch/discovery/zen/MembershipAction.java public class M......

go4it
今天
3
0
Redis集群

Redis cluster tutorial Redis集群提供一种方式自动将数据分布在多个Redis节点上。 Redis Cluster provides a way to run a Redis installation where data is automatically sharded acros......

OSC首席混子
今天
4
0
AWS codecommit 触发jenkins工作

在gitlab和github上面都有直接发送webhook的配置,但是在AWS上面是没有的直接配置webhook触发jenkins构建的设置的。 通过查看AWS多个service的官方文档,找到了解决方案,方案如下: (1)在c...

守护-创造
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部