博客
关于我
为什么我们要去调用start方法,而不是直接调用run方法?
阅读量:666 次
发布时间:2019-03-15

本文共 911 字,大约阅读时间需要 3 分钟。

启动线程的Java代码中,start()和run()方法的区别是关键。理解这两个方法的作用可以帮助开发者正确使用多线程功能。

线程启动必须通过start()方法。这个方法的作用是创建线程并调用的其run()方法。虽然start()方法会将线程放入就绪状态,使其具备执行资格,但真正执行run()的内容需要操作系统分配CPU时间。此外,start()方法还负责处理线程的优先级和其他初始设置。

不能直接调用run()方法来启动新线程。调用run()只是在当前线程上执行代码,而不会创建新的线程。例如,以下代码会在main线程上直接执行run()的内容,而不会启动新的线程:

Thread thread = new Thread("t1") {    @Override    public void run() {        // TODO Auto-generated method stub        System.out.println(Thread.currentThread().getName());    }};thread.run();

而使用start()方法的话,则会创建并启动一个新线程:

Thread thread = new Thread("t1") {    @Override    public void run() {        // TODO Auto-generated method stub        System.out.println(Thread.currentThread().getName());    }};thread.start();

启动线程后,可以在控制台观察线程的状态。使用start()方法启动线程时,打印的信息会显示线程名(t1),而直接调用run()的方法会显示当前线程的名称(通常为main)。这表明start()方法成功启动了新的线程,而run()方法只是在一个线程上执行代码。

总之,start()方法是正确的线程启动方式,而直接调用run()则只是在已有线程上执行代码,没有创建新的线程。理解这一区别是使用Java多线程的关键。

转载地址:http://rtumz.baihongyu.com/

你可能感兴趣的文章
Nitrux 3.8 发布!性能全面提升,带来非凡体验
查看>>
NI笔试——大数加法
查看>>
NLog 自定义字段 写入 oracle
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>