Java线程start()vs run()方法及示例

Java | 线程start()vs run()方法 (Java | Thread start() vs run() Methods)

When we call the start() method, it leads to the creation of a new thread. Then, it automatically calls the run() method. If we directly call the run() method, then no new thread will be created. The run() method will be executed on the current thread only.

当我们调用start()方法时 ,它将导致创建新线程。 然后,它会自动调用run()方法 。 如果我们直接调用run()方法,则不会创建新线程。 run()方法将仅在当前线程上执行。

That is why we have the capability of calling the run method multiple times as it is just like any other method we create. However, the start() method can only be called only once.

这就是为什么我们能够多次调用run方法的原因,就像我们创建的任何其他方法一样。 但是,start()方法只能被调用一次。

Consider the following code:

考虑以下代码:

class MyThread extends Thread { 
public void run() 
{ 
System.out.println("Thread Running: " + Thread.currentThread().getName()); 
} 
} 
public class MyProg { 
public static void main(String[] args) 
{ 
MyThread t1 = new MyThread(); 
t1.start(); 
} 
} 

Output

输出量

Thread Running: Thread-0

We can clearly see that the run() method is called on a new thread, default thread being named Thread-0.

我们可以清楚地看到, run()方法是在新线程上调用的,默认线程名为Thread-0

Consider the following code:

考虑以下代码:

class MyThread extends Thread { 
public void run() 
{ 
System.out.println("Thread Running: " + Thread.currentThread().getName()); 
} 
} 
public class MyProg { 
public static void main(String[] args) 
{ 
MyThread t1 = new MyThread(); 
t1.run(); 
} 
}

Output

输出量

Thread Running: main

We can see that in this case, we call the run() method directly. It gets called on the current running thread -main and no new thread is created.

我们可以看到在这种情况下,我们直接调用run()方法 。 在当前正在运行的线程-main上调用它,并且不创建新线程。

Similarly, in the following code, we realize that we can call the start method only once. However, the run method can be called multiple times as it will be treated as a normal function call.

同样,在下面的代码中,我们意识到只能调用一次start方法。 但是,可以多次调用run方法,因为它将被视为常规函数调用。

class MyThread extends Thread { 
public void run() 
{ 
System.out.println("Thread Running: " + Thread.currentThread().getName()); 
} 
} 
public class MyProg { 
public static void main(String[] args) 
{ 
MyThread t1 = new MyThread(); 
t1.run();
t1.run();
t1.start();
t1.start();
} 
} 

Output

输出量

Thread Running: main
Thread Running: main
Thread Running: Thread-0
Exception in thread "main" java.lang.IllegalThreadStateException
at java.base/java.lang.Thread.start(Thread.java:794)

翻译自: https://www.includehelp.com/java/thread-start-vs-run-methods-with-examples.aspx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装卸载mysql,Linux6 系列 安装、卸载mysql

Linux6 系列 安装、卸载mysqlLinux6 系列 安装、卸载mysqlLinux环境下载mysql:https://blog.csdn.net/weixin_40816738/article/details/90111456一、安装环境依赖:yum install -y cmake make gcc gcc-c libaio ncurses ncurses-devel二、安装流程1、软件…

Python | 如何使用pip升级所有Python软件包?

While using Python as a programming language, its a very common scenario to use a virtual environment and PIP, a package manager for python. 当使用Python作为编程语言时,使用虚拟环境和PIP (Python的程序包管理器)是一种非常常见的情况。 Its a common …

linux下enum类型占几个字节,enum大小问题

问题描述板卡有两个CPU,ARMMIPS,同时运行三个系统REE(linux) TEE(SierraTEE) SEE(TDS)。TEE跟SEE通过RPC进行通信,有enum成员的结构体信息传递会出错,如下结构体:struct sTag {enum A;enum B;int C;enum D;};问题分析…

ASP.NET导出word实例

ASP.NET导出word实例 最近遇到一个题目就是如何在asp.net中将数据导出到word中,由于数据是动态的,所以需要在后台拼出想要的的格式,翻遍了网页找出了一个比较满意的代码,感谢那位高手。代码如下: public void Download…

Java LocalDate类| toString()方法与示例

LocalDate类toString()方法 (LocalDate Class toString() method) toString() method is available in java.time package. toString()方法在java.time包中可用。 toString() method is used to represent this LocalDate as a String by using the standards ISO-8601 format.…

linux14.04 Apache,Ubuntu 14.04编译安装Apache

Ubuntu下编译安装apache需要预先编译安装多个依赖件,包括:apr, apr-util,pcre,zlib-devel,等,相当麻烦,记录于此备查.由于Ubuntu系统默认安装时没有安装C,所以也需要先安装c编译需要相关的组件。[注]apt-ca…

Android Jenkins自动化构建之路

install Jenkins 添加Jenkins的源(repository): sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key复制代码yum install Jenkins复制代码…

java 根据类名示例化类_Java即时类| plusMillis()方法与示例

java 根据类名示例化类即时类plusMillis()方法 (Instant Class plusMillis() method) plusMillis() method is available in java.time package. plusMillis()方法在java.time包中可用。 plusMillis() method is used to add the given duration in milliseconds to this Insta…

linux dd入门,Linux基础知识:Linux中DD命令详解

1.dd命令简介功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上&#xff0c…

CSS 字体(font)实例

1、设置文本字体 font-family:"Times New Roman",Georgia,Serif font-family:Arial,Verdana,Sans-serif 2、设置字体尺寸 font-size: 100% 3、设置字体风格 font-style:normal font-style:italic font-style:oblique 4、设置字体的异体 font-variant:normal text-var…

Java Duration类| 带示例的compareTo()方法

持续时间类compareTo()方法 (Duration Class compareTo() method) compareTo() method is available in java.time package. compareTo()方法在java.time包中可用。 compareTo() method is used to compare this Duration object to the given object. compareTo()方法用于将此…

linux定时任务执行url,科技常识:linux定时任务访问url实例

今天小编跟大家讲解下有关linux定时任务访问url实例 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关linux定时任务访问url实例 的相关资料,希望小伙伴会喜欢也能够帮助大家。这次linux定时任务设置成功,也算是自己学习…

lcase和ucase_在SQL中使用UCASE(),LCASE()和MID()函数

lcase和ucaseUpper Case, Lower Case and MID functions are scalar functions which return a single value, based in the input value. 大写,小写和MID函数是标量函数,它们基于输入值返回单个值。 As you all know sometimes different databases ha…

Maven的Settings.xml配置文件解释

该配置用于单用户配置和全局配置, 单用户配置默认存放于 ${user.home}/.m2/目录中. 全局配置默认存放于Maven安装目录下面的conf目录中. 这两个默认的位置都可以修改. <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://m…

linux ntp手动授时,关于我校NTP授时服务的使用说明

校园网用户&#xff1a;我中心于近期采购了GPS北斗授时服务设备&#xff0c;该设备可实现纯GPS模式、纯北斗模式和混合模式与卫星对时&#xff0c;同时实现对校内设备授时的功能。支持所有NTP协议的服务器、PC、嵌入式设备等&#xff0c;包括但不限于&#xff1a;Microsoft Win…

一串字符串转换为ascii_将ASCII字符串(char [])转换为C中的BYTE数组

一串字符串转换为asciiGiven an ASCII string (char[]) and we have to convert it into BYTE array (BYTE[]) in C. 给定一个ASCII字符串(char [])&#xff0c;我们必须将其转换为C语言中的BYTE数组(BYTE [])。 Logic: 逻辑&#xff1a; To convert an ASCII string to BYTE…

debugging Auto Layout:Logical Errors

Logical Errors逻辑错误 Logical errors are simply bugs. Somewhere, you have an assumption that is faulty. Perhaps it’s an assumption about how Auto Layout calculates the views’ frames. Perhaps it’s an assumption about the set of constraints that you’ve …

linux反序列化漏洞,思科多个产品Java反序列化漏洞(CVE-2015-6420)

思科多个产品Java反序列化漏洞(CVE-2015-6420)发布日期&#xff1a;2015-12-15更新日期&#xff1a;2015-12-17受影响系统&#xff1a;Cisco Unified ComputingCisco Voice and Unified Communications DevicesCisco Wireless描述&#xff1a;CVE(CAN) ID: CVE-2015-6420思科是…

密码学替代技术_替代技术及其类型| 密码学

密码学替代技术As we already discussed what are the Substitution techniques and one of its type Ceasar Cipher? So we are not discussing it here for that please refer to Cryptography: CeasarCipher here: Cryptography: Caesar Cipher and its Python Implementat…

Flask+uwsgi+Nginx环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表&#xff1a; setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0.1.tar.gz nginx-1.10.3.tar.gz 软件统一上传到/usr/local/src/下&#xff0c;python是使用自己编译的。Python安装 先安装以…