创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法
第一种:继承thread类,重写run()方法
一般方式:
Demo01.java
/**
* 创建线程的第一种方式:继承thread类,重写run()方法
*
* @author :liuqi
* @date :2018-06-12 15:12.
*/
public class Demo01 {
public static void main(String[] args) {
Rabit r = new Rabit();
Tortoise t = new Tortoise();
// 调用start方法启动线程,不要调用run方法由内部自己调用
r.start();
t.start();
for (int i = 0; i < 5; i++) {
System.out.println("main --> " + i);
}
}
}
Rabit.java
/**
* 兔子线程
*
* @author :liuqi
* @date :2018-06-12 15:14.
*/
public class Rabit extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("rabit run " + i);
}
}
}
Tortoise.java
/**
* 乌龟线程
*
* @author :liuqi
* @date :2018-06-12 15:17.
*/
public class Tortoise extends Thread {
@Override
public void run(){
for (int i = 0; i < 5; i++) {
System.out.println("Tortoise run " + i);
}
}
}
运行结果:
main --> 0
main --> 1
Tortoise run 0
Tortoise run 1
Tortoise run 2
Tortoise run 3
Tortoise run 4
main --> 2
rabit run 0
main --> 3
rabit run 1
rabit run 2
main --> 4
rabit run 3
rabit run 4
匿名内部类方式:
ThreadDemo.java
/**
* 使用匿名内部类的方式创建线程
*
* @author :liuqi
* @date :2018-06-12 15:02.
*/
public class ThreadDemo {
// 继承thread类实现多线程
public static void main(String[] args) {
new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
/*System.out.println(Thread.currentThread().getName() + "--"
+ x);*/
System.out.println("rabit run " + "--"
+ x);
}
}
}.start();
;
new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
/*System.out.println(Thread.currentThread().getName() + "--"
+ x);*/
System.out.println("tortoise run " + "--"
+ x);
}
}
}.start();
;
}
}
运行结果:
rabit run --0
rabit run --1
rabit run --2
rabit run --3
rabit run --4
tortoise run --0
tortoise run --1
tortoise run --2
tortoise run --3
tortoise run --4
参考:https://www.cnblogs.com/fuck1/p/5373700.html
代码地址:https://github.com/yuki9467/TST-javademo/tree/master/src/main/thread
创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法的更多相关文章
- 3.创建线程的第二种写法,继承threading.Tread类,重写run方法
#创建线程的第二种写法 #1.自定义一个类 #2.继承Thread #3.重写run()方法 import threading,time,random class MyThread(threading ...
- 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口
线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...
- 49、多线程创建的三种方式之继承Thread类
继承Thread类创建线程 在java里面,开发者可以创建线程,这样在程序执行过程中,如果CPU空闲了,就会执行线程中的内容. 使用Thread创建线程的步骤: 1.自定义一个类,继承java.lan ...
- 如何创建线程第一种继承Thread类
步骤 1:定义一个类 继承Thread类.2:重写Thread类的run方法.3:直接创建Thread的子类对象创建线程.4:调用start方法开启线程并调用线程的任务run方法执行.-------- ...
- python学习笔记——线程threading (二)重写run()方法和守护进程daemon()
1 run()方法 1.1 单个线程 在threading.Thread()类中有run()方法. from time import ctime,sleep import threading # 定义 ...
- Python连载32-多线程其他属性以及继承Thread类
一.线程常用属性 1.threading.currentThread:返回当前线程变量 2.threading.enumerate:返回一个包含正在运行的线程的list,正在运行的线程指的是线程启动后 ...
- 创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法
启动:使用静态代理设计模式 优点:可同时实现继承,避免单继承局限性 一般方式: Programer.java /** * 真实角色 * * @author :liuqi * @date :2018-0 ...
- 创建线程的两种方式:继承Thread类和实现Runnable接口
第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...
- 【多线程】创建线程方式一:继承Thread类
创建线程方式一:继承Thread类 代码示例: /** * @Description 继承Thread类,重写run方法,调用start开启线程 * @Author hzx * @Date 2022- ...
随机推荐
- postman接口测试笔记
1.GET 和POST 的区别: GET 使用URL 或Cookie 传参,而POST将数据放在Body 中. GET的URL 在长度上会有限制,而POST没有. POST比GET相对安全,因为在地址 ...
- uCos-II移值(一)
os_cpu.h文件 该文件主要是完成操作系统使用的内部数据类型.常数以及宏的定义,这些都是与处理器平台密切相关的: 第一部分 以下部分定义了系统内部常用的数据类型,为了增加系统的可移植性,系统内核只 ...
- OSPFv3实验配置(GNS3)
实验目的 1. 掌握 OSPFv3(v2) 的配置方法 2. 掌握在帧中继环境下 OSPFv3 (v2)的配置方法 3. 掌握 OSPFv3(v2) NSSA 的配置方法 4. 掌握外部路由汇总的配置 ...
- python 单例实现
class View: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._insta ...
- Intellij IDEA 修改jsp 不能实时更新
Intellij IDEA 修改jsp 不能实时更新 1. 首先,output要指定到项目的webapp下,这样应该就可以实时更新了 2. 我的问题是这样设置之后,也不可以,原来是可以的,重装系统之后 ...
- Groovy中的GString
在讨论GString之前,我们先讨论一下Groovy里面的String.在Groovy里面String有 println 'test string' println '''test string''' ...
- Python 自动化测试框架 unittest 和 pytest 对比
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...
- RandomAccessFile出现中文乱码问题
之前程序里调用了RandomAccessFile的writeByte(String str)方法,报文里存在中文的时候出现了乱码 后面换成了 write(byte b[])或writeBytes(by ...
- 关于this绑定的四种方式
一.前言 我们每天都在书写着有关于this的javascript代码,似懂非懂地在用着.前阵子在看了<你不知道的JavaScript上卷>之后,也算是被扫盲了一边关于this绑定的四种方式 ...
- C语言尝试在不同源文件中调用程序段
基于Visual Studio 2015 将下面两个cpp文件置于同一源文件目录下即可 源.cpp #include <stdio.h> int main() { extern int s ...