Java多線程專題-Java多線程簡介及創建方式

Java多線程簡介

線程是程序中一個單一的順序控制流程。進程內有一個相對獨立的、可調度的執行單元,是系統獨立調度和分派CPU的基本單位指令運行時的程序的調度單位。在單個程序中同時運行多個線程完成不同的工作,稱爲多線程。

多線程指在程序內部同時執行多條任務線,各自同時進行處理不同的任務,從而最大限度利用計算機性能,提高程序效率。

進程與線程比較

每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。線程是一組指令的集合,或者是程序的特殊段,它可以在程序裏獨立執行。也可以把它理解爲代碼運行的上下文。所以線程基本上是輕量級的進程,它負責在單個程序裏執行多任務。通常由操作系統負責多個線程的調度和執行。

使用線程可以把佔據時間長的程序中的任務放到後臺去處理,程序的運行速度可能加快,在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內存佔用等等。

如果有大量的線程,會影響性能,因爲操作系統需要在它們之間切換,更多的線程需要更多的內存空間,線程的中止需要考慮其對程序運行的影響。通常塊模型數據是在多個線程間共享的,需要防止線程死鎖情況的發生。

總結:進程是所有線程的集合,每一個線程是進程中的一條執行路徑。

多線程創建方式

多線程的創建方式有多種,本文介紹常用的兩種方式:繼承Thread類、實現Runable接口,其他還有使用內部類等方式。

繼承Thread類方式

/**
 * 功能描述:通過繼承Thread的方式創建多線程
 * 
 */
class CreateThread extends Thread {
    // run方法中編寫 多線程需要執行的代碼
    public void run() {
        for (int i = 0; i< 5; i++) {
            System.out.println("i:" + i);
        }
    }
}
public class ThreadDemo {

    public static void main(String[] args) {
        System.out.println("-----多線程創建開始-----");
        // 1.創建一個線程
        CreateThread createThread = new CreateThread();
        // 2.開始執行線程 注意 開啓線程不是調用run方法,而是start方法
        System.out.println("-----多線程創建啓動-----");
        createThread.start();
        System.out.println("-----多線程創建結束-----");
        }
}

以上代碼運行結果:

-----多線程創建開始-----
-----多線程創建啓動-----
-----多線程創建結束-----
i:0
i:1
i:2
i:3
i:4

實現runable接口方式

/**
 * 功能描述:通過實現Runnable接口的方式創建多線程
 * 
 */
class CreateRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i< 10; i++) {
            System.out.println("i:" + i);
        }
    }
}

public class ThreadDemo2 {
    public static void main(String[] args) {
        System.out.println("-----多線程創建開始-----");
        // 1.創建一個線程
        CreateRunnable createThread = new CreateRunnable();
        // 2.開始執行線程 注意 開啓線程不是調用run方法,而是start方法
        System.out.println("-----多線程創建啓動-----");
        Thread thread = new Thread(createThread);
        thread.start();
        System.out.println("-----多線程創建結束-----");
    }
}

獲取線程對象以及名稱

常用線程api方法

start()

啓動線程

currentThread()

獲取當前線程對象

getID()

獲取當前線程ID      Thread-編號  該編號從0開始

getName()

獲取當前線程名稱

sleep(long mill)

休眠線程

Stop()

停止線程,

常用線程構造函數

Thread()

分配一個新的 Thread 對象

Thread(String name)

分配一個新的 Thread對象,具有指定的 name正如其名。

Thread(Runable r)

分配一個新的 Thread對象

Thread(Runable r, String name)

分配一個新的 Thread對象

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章