在日常的開發中,很多一些開發中較常見的問題,還是需要去仔細研究一下,最重要的還是實踐。以小見大。
一、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();
}
}
上面是兩個最簡單的多線程的實踐。
希望能拋磚引玉。