1. 程式人生 > >Java主執行緒和其餘執行緒的區別和實踐(Main、Runnable、Thread)

Java主執行緒和其餘執行緒的區別和實踐(Main、Runnable、Thread)

在日常的開發中,很多一些開發中較常見的問題,還是需要去仔細研究一下,最重要的還是實踐。以小見大。

一、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();
    }
}

上面是兩個最簡單的多執行緒的實踐。
希望能拋磚引玉。