Thread的run()与start()的区别
来源:互联网 发布:什么软件有耽美动漫 编辑:程序博客网 时间:2024/04/30 06:20
Java的线程是通过java.long.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。
可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定的Thread对象对应的run方法来完成其操作的,
run方法称为线程体。通过调用Thread类的start方法来启动一个线程。
在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞、死亡
第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这就是线程处于创建状态。
第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,
但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。
第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入运行状态,开始运行run函数当中的代码。
第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续执行。sleep,suspend,wait等方法都可以导致线程阻塞。
第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。
*实现并启动线程的两种方法:
1.写一个类继承自Thread类,重写run方法,用start方法启动线程。
2.写一个类实现Runnable接口,实现run方法,用new Thread(Runnable target).start()方法来启动
-start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类start方法来启动一个线程,这是此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run来完成其运行操作的,这里方法run称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程终止,然后CPU再调度其他线程。
-run()方法当做普通方法的方式调用。程序还是要顺序执行,要等待run方法执行完毕后,才可继续执行下面的代码;程序中只有主线程--这一线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
多线程就是分时利用CPU,宏观上让所有线程一起执行,也叫并发。
0 0
- Thread的start()与run()的区别
- Thread的run()与start()的区别
- Thread的run与start的区别
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- Java Thread start 与 run的区别
- Thread.run()方法与Thread.start()方法的区别
- Thread的start与run
- thread.start和 thread.run 的区别
- Thread.start()和Thread.run()的区别
- Thread 的start()与run()的区别与联系
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- Thread的run()与start()的区别
- java中Thread的start()与run()的区别
- 《机器学习实战(Scala实现)》(三)——决策树
- 用CSS伪选择器实现脚本控制的按钮功能
- JSP有关内置对象的问题
- 103-atfork 与 fork
- CCF CSP 编程题目和解答-----试题名称:炉石传说 -------201609-3
- Thread的run()与start()的区别
- Camera Path Animator
- MATLAB数字图像处理基本概念及图像文件读取
- 把某个js时间转化为几天前,几小时前,几分钟前
- java中的异常处理机制
- 九度OJ-题目1034 寻找大富翁
- SEAndroid 解决案例
- [模拟](JZOJ)【普及模拟】蚂蚁
- Spring mvc interceptor拦截器