第一种:继承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()方法的更多相关文章

  1. 3.创建线程的第二种写法,继承threading.Tread类,重写run方法

    #创建线程的第二种写法 #1.自定义一个类 #2.继承Thread #3.重写run()方法 import threading,time,random class MyThread(threading ...

  2. 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口

    线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...

  3. 49、多线程创建的三种方式之继承Thread类

    继承Thread类创建线程 在java里面,开发者可以创建线程,这样在程序执行过程中,如果CPU空闲了,就会执行线程中的内容. 使用Thread创建线程的步骤: 1.自定义一个类,继承java.lan ...

  4. 如何创建线程第一种继承Thread类

    步骤 1:定义一个类 继承Thread类.2:重写Thread类的run方法.3:直接创建Thread的子类对象创建线程.4:调用start方法开启线程并调用线程的任务run方法执行.-------- ...

  5. python学习笔记——线程threading (二)重写run()方法和守护进程daemon()

    1 run()方法 1.1 单个线程 在threading.Thread()类中有run()方法. from time import ctime,sleep import threading # 定义 ...

  6. Python连载32-多线程其他属性以及继承Thread类

    一.线程常用属性 1.threading.currentThread:返回当前线程变量 2.threading.enumerate:返回一个包含正在运行的线程的list,正在运行的线程指的是线程启动后 ...

  7. 创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法

    启动:使用静态代理设计模式 优点:可同时实现继承,避免单继承局限性 一般方式: Programer.java /** * 真实角色 * * @author :liuqi * @date :2018-0 ...

  8. 创建线程的两种方式:继承Thread类和实现Runnable接口

    第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...

  9. 【多线程】创建线程方式一:继承Thread类

    创建线程方式一:继承Thread类 代码示例: /** * @Description 继承Thread类,重写run方法,调用start开启线程 * @Author hzx * @Date 2022- ...

随机推荐

  1. JN_0008:win下通过cmd进入指定目录

    1,WIN+R,调出运行命令窗口,并输入CMD,回车确认运行 2,先进入盘符,如:    d: 3,再进入盘符下的指定目录,如:    cd test 4,一次性进入指定目录(要用到  /d 命令): ...

  2. 1. Ansible 简介

    目录 1. Ansible 是什么? 2. Ansible 特性 3. 控制主机需求 4. 被管理节点需求 1. Ansible 是什么? Ansible 是一个配置管理系统(configuratio ...

  3. JGUI源码:组件及函数封装方法(7)

    以Accordion为例1.在base.js定义一个对象,这样可以和JQuery对象区分开,用户使用组件时比较清晰一点,也可以在这里引用多个库. var JGUI = J = { version : ...

  4. 【干货】提取图片元数据之exiftool

    知识源:UC3Mx: INF.2x网络安全基础:实践方法 课程  第1周.讲座2.计算机取证  常见的法医痕迹  2.2.1.元数据 exiftool是一种查看,更新或删除元数据的工具.是Window ...

  5. Spring Cloud 2-Bus 消息总线(九)

    Spring Cloud  Bus  1.服务端配置 pom.xml application.yml 2.客户端配置 pom.xml application.yml Controller.java 3 ...

  6. appniu踩坑

    1.pyCharm识别不到appnium-python-client 解决:新建项目注意选择环境,查看Project Interpreter中是否识别到了appnium-python-client 还 ...

  7. 一篇文章搞懂Android组件化

    网上组件化的文章很多,我本人学习组建化的过程也借鉴了网上先辈们的文章.但大多数文章都从底层的细枝末节开始讲述,由下而上给人一种这门技术“博大精深”望而生畏的感觉.而我写这篇文章的初衷就是由上而下,希望 ...

  8. java - day006 - 构造方法

    构造方法 新建对象是,执行的一个特殊方法 new 类名(); 这个小括号就是构造方法 Java 类中,必须有构造方法,如果自己不定义, 编译器会自动生成默认构造方法 new 关键字是新建对象用的,   ...

  9. QT删除非空文件夹

    int choose; choose = QMessageBox::warning(NULL,"warning","确定删除该文件?",QMessageBox: ...

  10. APP测试中iOS和Android的区别

    一.常识性区别 二.导航方式 iOS:Tab放在页面底部,不能通过滑动来切换,只能点击.也有放在上面的,也不能滑动,但有些Tab本身可以滑动,比如天猫的.还有新闻类的应用. Android:一般放在页 ...