Java 进阶(7) 创建线程

这篇具有很好参考价值的文章主要介绍了Java 进阶(7) 创建线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

继承Thread类

1. 定义Thread类的⼦类,并重写该类的run()⽅法,该run()⽅法的⽅法体就代表了线程需要完成的任务,因此把run()⽅法称为线程执⾏体。

2. 创建Thread⼦类的实例,即创建了线程对象

3. 调⽤线程对象的start()⽅法来启动该线程

示例:

//继承自Thread类
class MyThread extends Thread{

    //private int ticket = 12;
    private static int ticket = 12;

    //给线程起名字
    public MyThread(String name){
        super(name);
    }

    @Override
    public void run() {
        //线程的执行体
        for (int i = 0; i < 4; i++) {
            //System.out.println("新开的线程:"+i);
            System.out.println(Thread.currentThread().getName()+"卖了一张票,剩下:"+ticket--);
        }
    }
}

测试:

public class Demo1 {
    public static void main(String[] args) throws InterruptedException {//程序的入口
        //创建子类对象
        MyThread t1 = new MyThread("窗口1");
        MyThread t2 = new MyThread("窗口2");
        MyThread t3 = new MyThread("窗口3");
        //step3:调用start()方法
        //myThread.run();//这样写,是普通的方法的调用
        t1.start();//相当于开启一个新的线程,这个新的线程跟main线程是平级的
        t2.start();
        t3.start();
    }
}

实现Runnable接⼝

1. 定义Runnable接⼝的实现类,并重写该接⼝的run()⽅法,该run()⽅法的⽅法体同样是该线程的线程执⾏体。

2. 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。

3. 调⽤线程对象的start()⽅法来启动线程。

示例:

//实现Runnable接口
class MyRunnable  implements Runnable{

    private int ticket = 12;

    @Override
    public void run() {
        //线程的执行体
        //线程的执行体
        for (int i = 0; i < 4; i++) {
            //System.out.println("新开的线程:"+i);
            System.out.println(Thread.currentThread().getName()+"卖了一张票,剩下:"+ticket--);
        }
    }
}

测试: 

public class Demo2 {
    public static void main(String[] args) {

        //step2:创建实现类的对象
        MyRunnable myRunnable = new MyRunnable();
        Thread t1 = new Thread(myRunnable,"窗口1");
        Thread t2 = new Thread(myRunnable,"窗口2");
        Thread t3 = new Thread(myRunnable,"窗口3");
        //step3:启动一个线程
        t1.start();
        t2.start();
        t3.start();
    }
}

继承Thread 和实现Runnable的区别

如果⼀个类继承Thread,则不适合资源共享。但是如果实现了Runable接⼝的话,则很容易的实现资源共享。总结:实现Runnable接⼝⽐继承Thread类所具有的优势:

1. 适合多个相同的程序代码的线程去共享同⼀个资源。

2. 可以避免java中的单继承的局限性。

3. 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独⽴。文章来源地址https://www.toymoban.com/news/detail-415479.html

到了这里,关于Java 进阶(7) 创建线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多线程 -- Thread类的基本用法

    本篇重点 什么是变量捕获?? 有关线程的操作 关于线程的创建看上篇博客, 里面为线程的创建提供了5种方法 线程的中断, 就是让一个线程停下来 本质上来说, 让一个线程终止, 办法就一种, 让该线程的入口方法执行完毕!! ( return 或者 抛出异常等) 给线程规定一个结束标志位 说白

    2024年02月07日
    浏览(88)
  • JavaEE初阶:多线程 - Thread 类的基本用法

    上次我们了解了多线程的五种创建方法,今天来学习Thread的基本用法。 目录 run和start Thread常见的构造方法 Thread的几个常见属性 后台线程 是否存活 线程终止 1.使用标志位 2.使用Thread自带的标志 等待线程 首先需要理解Thread的run和start的区别: run描述了线程要做的工作,star

    2024年02月12日
    浏览(33)
  • iOS开发Swift-8-类的继承,方法重写,构造器,枚举类型,可选类型,强制解包,可选绑定,隐式可选类型...

    1.类的继承  2.方法的重写 3.构造器: 创建对象;给对象进行初始化  4.枚举类型 5.枚举的原始值 6.枚举的简写  7.可选类型  8.强制解包 9.可选绑定  10.隐式可选类型  11.可选类型自动赋值

    2024年02月09日
    浏览(43)
  • Java 进阶(7) 创建线程

    1. 定义Thread类的⼦类,并重写该类的run()⽅法,该run()⽅法的⽅法体就代表了线程需要完成的任务,因此把run()⽅法称为线程执⾏体。 2. 创建Thread⼦类的实例,即创建了线程对象 3. 调⽤线程对象的start()⽅法来启动该线程 示例: 测试: 1. 定义Runnable接⼝的实现类,并重写该接⼝

    2023年04月16日
    浏览(45)
  • 关于java继承Thread类

    我们在前面的文章中,了解到了java的多线程,进程等基础的概念,我们本篇文章进一步介绍一下线程的创建以及几种创建方式,本篇文章以Thread类为主,先摸清Thread类😀。 Thread class :继承Thread类 Runnable接口 :实现Runnable接口 Callable接口 :实现Callable接口 JDK帮助文档描述:

    2024年02月20日
    浏览(30)
  • 【浅尝C++】继承机制=>虚基表/菱形虚继承/继承的概念、定义/基类与派生类对象赋值转换/派生类的默认成员函数等详解

    🏠专栏介绍:浅尝C++专栏是用于记录C++语法基础、STL及内存剖析等。 🎯每日格言:每日努力一点点,技术变化看得见。 我们生活中也有继承的例子,例如:小明继承了孙老师傅做拉面的手艺。继承就是一种延续、复用的方式。C++为了提高代码的可复用性,引入了继承机制,

    2024年04月10日
    浏览(48)
  • JAVA中,继承父类和重写父类方法有什么区别?

    在Java中,继承和重写都是面向对象编程的重要概念,但它们有着完全不同的作用: 继承:继承是对象之间的一种关系,子类(派生类)会继承父类(基类)的属性(成员变量)和方法。这使得你可以使用父类的代码,并添加或改变类的行为,以适应新的需求。继承主要是为

    2024年02月10日
    浏览(54)
  • 我在VScode学Java继承(Java继承的特点、super关键字、super和this对比、方法重写、子类构造器)贰

    类的成员包括:成员变量;成员方法;构造方法 构造方法:不管什么修饰符都不可继承 成员变量:都可以继承,但注意一点(继承!=调用,私有的就不可调用) 成员方法:非私有可以。私有不可。 我的个人博客主页:如果’\\\'真能转义1️⃣说1️⃣的博客主页 关于Java基本语

    2024年02月14日
    浏览(55)
  • Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例

    1.java运行时的内存分配,创建对象时内存分配; 2.类加载的顺序,创建一个唯一的类的类对象; 3.创建对象的方式,new,Class.forName,clone; 4.什么时候加载.class文件进入JVM内存中,看到new,Class.forName; 5.如何加载?双亲委托(委派)机制:安全;AppClassLoader; 6.反射实质:能

    2024年02月14日
    浏览(44)
  • JavaEE之多线程编程:2.创建线程及Thread类常见方法(超全!!!)

    Java中创建线程的写法有很多种!!!这里介绍其中5种。 方法1:继承Thread类,重写run 创建一个类,让这个类继承自Thread父类,再重写我们的run方法就可以了。 使用Thread类,不需要import别的包,因为它是再Java.lang下面的。 注意: start() 是创建了一个新的线程,由新的线程来执

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包