Java主线程和其余线程的区别和实践(Main、Runnable、Thread)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wd2014610/article/details/85291597

在日常的开发中,很多一些开发中较常见的问题,还是需要去仔细研究一下,最重要的还是实践。以小见大。

一、Java线程中。Main、Runnable和Thread。

相信在工作中,只要是有用到多线程异步编程,最起码都要和这三个打交道。
1、每个Java应用程序都有一个执行Main()函数的默认主线程。这个就是主线程
2、应用程序也可以创建线程在后台运行。Java主要是通过Java.Lang.Thread类以及Java.lang.Runnable接口来实现线程机制的。这边所有的都是其余线程
本贴主要是从实践角度来实践一下多种不同的写法。
以小处来窥见大的知识点。

二、下面来看一个Runnable接口的使用方法

注意这是一个接口

package com.newframe.controllers.api;

public class TestRunnable {

    public static void main(String[] args) {

        /**
         * 在Java8之前,这是唯一一种创建Runnable的方式
         */
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("这是Java8以前的创建runnable的方式");
            }
        };

        /**
         * 在Java8引入了lambda表达式后的方式
         */
        Runnable r2 = () -> System.out.println("这是Java8引入了lambda表达式后创建的runnable的方式");

        /**
         * 在这边,你这样调用.run()即可运行,当然,我们一搬不这样做。
         */
        r1.run();
        r2.run();

        /**
         * 我们一搬都是将Runnable对象传递到Thread类接收Runnable作为参数的构造函数中
         * 然后启动该线程
         */
        //下面这个线程就是
        Thread t1 = new Thread(r1);
        t1.start();
    }
}

三、关于Thread类的使用

步骤一、

package com.newframe.controllers.api;

/**
 * 创建一个MyThread类来继承Thread类
 */
public class MyThread extends Thread{

    //在使用这个MyThread实现类的时候,首先要先重写他的run方法,让他去做你要求的事

    @Override
    public void run() {
        //例如
        System.out.println("请去给我找个靠谱的工作");
        //下面这一句可以不要
        // super.run();
    }
}

步骤二、

package com.newframe.controllers.api;

public class TestMyThread {

    public static void main(String[] args) {

        //创建MyThread类对象
        MyThread myThread = new MyThread();
        //调用重写过的run方法
        //输出:请去给我找个靠谱的工作
        myThread.run();
    }
}

上面是两个最简单的多线程的实践。
希望能抛砖引玉。

猜你喜欢

转载自blog.csdn.net/wd2014610/article/details/85291597