线程的实现方式二

Posted 江小白谢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的实现方式二相关的知识,希望对你有一定的参考价值。

线程实现方式二:

    1.自定义一个类实现runnable接口

        class Thread implements Runnable 

        查看源代码,我们可以知道Thread实现了runnable接口

        runnable中只有一个run抽象类

    2.实现run方法,把自定义线程的任务定义在run方法里面

    3.创建一个runnable实现类对象

    4.创建Thread方法,并把runnable实现类对象作为实参传过去

        Thread的构造方法:

            Thread(Runnable target)        分配新的 Thread 对象。

            Thread(Runnable target ,String name) 分配新的 Thread 对象并这个可以给线程一个名字

    5.并用Thread方法的start方法开启一个线程线程

        start方法不是静态的,要实例化对象

 

    疑问1:runnable的实现类是线程类吗?

        不是,只有Thread和Thread的子类才是线程对象

        rannable的实现类只是是实现了rannable接口的对象而已

    疑问2:为什么我们调用Thread的start方法可以执行runnable接口的实现类的run方法呢?

        源代码如下:

Thread类的构造方法
    public Thread(Runnable target, String name) {
        init(null, target, name, 0);
    }
    Thread类的run方法
    public void run() {
        if (target != null) {
            target.run();
        }
    }
    Thread类的target成员变量
    private Runnable target;

 

 

 

      原来,然后当我们调用Thread的start方法的时候,就调用了Thread的run方法,

      而我们传递一个runnable实现类的对象,然后Thread的run方法会调用runnable实现类的run方法

 

下面是实现runnable接口的实例代码: 

public class Demo7 implements Runnable {
    
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println(Thread.currentThread().getName()+i);
        }
        
    }
    public static void main(String[] args) {
        Demo7 demo = new Demo7();
        Thread thread = new Thread(demo,"狗娃");
        thread.run();
        thread.start();
        for (int i = 0; i < 50; i++) {
            System.out.println(Thread.currentThread().getName()+i);
        }
    }
    
    
}

 

以上是关于线程的实现方式二的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程实现的四种方式

OpenGL基础学习之二代码基本结构

二代测序的数据的分析——质量控制

咸鱼教程Egret实现摇一摇功能

为什么二代测序的原始数据中会出现Read重复现象?

AMD二代霄龙实测:双路128核心256线程无情碾压