線程相關

學習筆記
----javaSE系列


一.兩種創建線程的方法

1,繼承Thread類,重寫其中的run()方法
(1)繼承
classAextendsThread{
publicvoidrun(){

//線程任務邏輯

}
}

(2)在main()中聲明線程
Threadt1=newA();
t1.start();


注:也可以用內部類的方式直接創建線程

Threadt1=newThread(){

publicvoidrun(){

//線程任務邏輯

}

};
t1.start();


2.單獨定義線程體,實現Runnable接口
(1)定義一個類實現接口

classAimplementsRunnable{

publicvoidrun(){

//線程任務邏輯

}

}

(2)在main()中創建對象

Aa1=newA();
Threadt1=newThread(a1);


注:可以用匿名內部類的方式實現Runnable

Threadt1=newThread(newRunnable(){

publicvoidrun(){
//線程任務邏輯
}

});

t1.start();

線程同步小結
1、線程同步的目的是爲了保護多個線程反問一個資源時對資源的破壞。
2、線程同步方法是通過鎖來實現,每個對象都有切僅有一個鎖,這個鎖與一個特定的對象關聯,線程一旦獲取了對象鎖,其他訪問該對象的線程就無法再訪問該對象的其他同步方法。
3、對於靜態同步方法,鎖是針對這個類的,鎖對象是該類的Class對象。靜態和非靜態方法的鎖互不干預。一個線程獲得鎖,當在一個同步方法中訪問另外對象上的同步方法時,會獲取這兩個對象鎖。
4、對於同步,要時刻清醒在哪個對象上同步,這是關鍵。
5、編寫線程安全的類,需要時刻注意對多個線程競爭訪問資源的邏輯和安全做出正確的判斷,對“原子”操作做出分析,並保證原子操作期間別的線程無法訪問競爭資源。
6、當多個線程等待一個對象鎖時,沒有獲取到鎖的線程將發生阻塞。
7、死鎖是線程間相互等待鎖鎖造成的,在實際中發生的概率非常的小。真讓你寫個死鎖程序,不一定好使。但是,一旦程序發生死鎖,程序將死掉

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