Java多線程學(xué)習(xí)總結(jié)(一)
一、線程的基本概念
簡(jiǎn)單的說(shuō):線程就是一個(gè)程序里不同的執(zhí)行路徑,在同一個(gè)時(shí)間點(diǎn)上cpu只會(huì)有一個(gè)線程在執(zhí)行,Java里的多線程是通過(guò)java.lang.Thread類來(lái)實(shí)現(xiàn)的,每個(gè)線程都擁有自己獨(dú)立的方法??臻g。
二、java線程的創(chuàng)建和啟動(dòng)
***種
定義線程類實(shí)現(xiàn)Runnable接口:
Thread myThread = new Thread(target) //target為Runnable接口類型
Runnable中只有一個(gè)方法:
public void run();用以定義線程運(yùn)行體
第二種
可以定義一個(gè)Thread的子類并重寫(xiě)其run方法:
clas MyThread extends Thread{
public void run(){}
}
線程類必須通過(guò)執(zhí)行Thread的start()方法啟動(dòng)一個(gè)新的線程,如果調(diào)用run()方法是屬于方法的調(diào)用,不會(huì)啟動(dòng)一個(gè)新的線程,推薦使用***種方式創(chuàng)建線程,使用接口較為靈活。
三、線程狀態(tài)裝換
調(diào)用線程start()方法時(shí),線程進(jìn)入就緒狀態(tài),Cpu分配時(shí)間片,線程進(jìn)入運(yùn)行狀態(tài),時(shí)間片結(jié)束,run()方法未執(zhí)行完,線程進(jìn)入阻塞狀態(tài)。
四、線程控制基本方法
isAlive() //判斷線程是否還“活著”,即線程是否還未終止
getPriority() //獲得線程的優(yōu)先級(jí)數(shù)值
setPriority() //設(shè)置線程的優(yōu)先級(jí)指數(shù)
Thread.sleep() //靜態(tài)方法,將當(dāng)前線程睡眠指定毫秒數(shù)
join() //調(diào)用某線程的該方法,將當(dāng)前線程與該線程合并,
//即等待該線程結(jié)束,再回復(fù)當(dāng)前線程的運(yùn)行。
yield() //讓出CPU,當(dāng)前線程進(jìn)入就緒狀態(tài)等待調(diào)度
interrupt() //中斷線程
wait() //當(dāng)前線程進(jìn)入對(duì)象的wait pool
notify()/all //喚醒對(duì)象的wait pool中的一個(gè)/所有等待線程
五、sleep方法
Thread的靜態(tài)方法
public static void sleep(long millis)throws InterruptedException
必須對(duì)異常進(jìn)行捕捉
Thread.currentThread(); //拿到當(dāng)前線程
【編輯推薦】