一、簡單描述什麼是進程和線程
1、進程:進程是程序運行資源分配的最小單位。
2、線程:線程是CPU調度的最小單位,必須依賴於進程而存在。
二、創建線程的幾種方式
在JDK的源碼Thread類中明確表示,創建線程的方式一共有兩種:
- 一種是繼承Thread類
- 另外一種是實現Runnable接口
如下圖Thread類中的描述所示:
具體示例請看如下代碼:
package cn.lspj.ch1.base;
/**
* 創建線程的方式
* 1、繼承至Thread類
* 2、實現Runnable接口
*/
public class NewThread {
private static class UseThread extends Thread {
@Override
public void run() {
// TODO do my work
System.out.println("使用 extend Thread 方式創建的線程。。。 ");
}
}
private static class UseRunnable implements Runnable {
@Override
public void run() {
// TODO do my work
System.out.println("使用 implements Runnable 方式創建的線程。。。 ");
}
}
public static void main(String[] args) {
UseThread useThread = new UseThread();
useThread.start(); //啓動線程
UseRunnable useRunnable = new UseRunnable();
new Thread(useRunnable).start(); // 啓動線程
}
}
Thread 和 Runnable 的區別:
- Thread 纔是 Java 裏對線程的唯一抽象。
- Runnable 只是對任務(業務邏輯) 的抽象。
- Thread 可以接受任意一個 Runnable 的實例並執行。
特別注意,很多博客,在講創建線程的方式時大部分說是三種,繼承Thread、實現Runnable或者Callable接口,但是從本質上來講Runnable和Callable可以歸爲一類。Callable可以指定返回值和檢查異常處理,而Runnable不能。
備註:博主微信公衆號,不定期更新文章,歡迎掃碼關注。