一、行程
行程:行程是計算機中的程式關于某資料集合上的一次運行活動
1.行程的執行程序是線狀的,盡管中間會發生中斷或暫停,但該行程所擁有的資源只為該線狀執行程序服務,行程是整個現代作業系統的根本,操作系統是以行程為單位執行任務,
2.是系統進行資源分配和調度的基本單位,是作業系統結構的基礎,
3.每個行程都有其自己的記憶體空間和系統資源
4.一個行程可以有多個執行緒
二、執行緒
執行緒:行程中的一個執行任務(控制單元),負責當前行程中程式的執行,一個行程至少有一個執行緒,一個行程可以運行多個執行緒,多個執行緒可共享資料,
1.單執行緒:一個行程中只有一個執行緒
2.多執行緒:一個行程中同時存在多個執行緒
三、多執行緒的實作方式
方式一:繼承Thread類
1.定義一個MyThread繼承Thread類
2.在MyThread類中重寫run()方法
3.創建MyThread類的物件
4.啟動執行緒
MyThread類
public class MyThread extends Thread{
@Override
public void run() {
for (int i=0;i<100;i++){
System.out.println(i);
}
}
}
?
測驗類
public class MyThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
//void start()導致此執行緒開始執行;Java虛擬機呼叫此執行緒的run方法
mt1.start();
mt2.start();
?
?
}
}
問題1:問什么要重寫run()方法?
因為run()方法是用來封裝被執行緒執行的代碼
問題二:run()方法于start()方法的區別?
run():封裝執行緒執行的代碼,直接呼叫,相當于普通方法的呼叫
start():啟動執行緒,由JVM呼叫此執行緒的run()方法
四、設定和獲取執行緒名稱
Thread類中設定和獲取執行緒名稱的方法
設定執行緒名稱:void setName(String name):將此執行緒的名稱更改為等于引數name
獲取執行緒名稱:void getName():回傳此執行緒的名稱
可以使用無參構造或者帶參構造兩種方式,帶參構造需要創建帶參構造方法呼叫父類的方法
MyTread類
public class MyThread extends Thread{
//無參構造
public MyThread(){}
//帶參構造
public MyThread(String name){
super(name);
}
@Override
public void run() {
for (int i=0;i<100;i++){
?
//使用getName()獲取執行緒名稱
System.out.println(getName()+":"+i);
}
}
}
?
測驗類
/*啟動多執行緒
方式一:繼承Thread類
1.定義一個MyThread繼承Thread類
2.在MyThread類中重寫run()方法
3.創建MyThread類的物件
4.啟動執行緒
* */
public class MyThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
//void start()導致此執行緒開始執行;Java虛擬機呼叫此執行緒的run方法
//使用setName()設定執行緒名稱
mt1.setName("一");
mt2.setName("二");
//方式二 使用帶參構造進行
MyThread mt3=new MyThread("三");
MyThread mt4=new MyThread("四");//報錯是因為MyThread類中沒有帶參構造,需要加進去
mt1.start();
mt2.start();
mt3.start();
mt4.start();
}
}
static Thread currentThread()方法:回傳對當前正在執行的執行緒物件的參考
//static Thread currentThread()方法:回傳對當前正在執行的執行緒物件的參考
System.out.println(Thread.currentThread().getName());
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/458129.html
標籤:其他
