VOOZH about

URL: https://read01.com/0emyQJ.html

⇱ J2SE基礎:13.多線程編程 - 壹讀


Sunday, Apr 12, 2026

J2SE基礎:13.多線程編程

2014/09/07 來源:紅黑聯盟

進程:運行一個程序,程序在內存分配了運行空間。在內存起了一個進程。

線程:在進程中運行。多個線程之間可以進行相互的切換。

主線程

子線程:子線程都是從主線程中分配出來的。2:主線程的重要性。

1:繼承Thread類:

2:實現Runable接口:

繼承Thread類與實現Runable接口的區別:

Java只支持單繼承,一旦一個類繼承了Thread類的話,就不能再繼承其它的類了。5:Thread.join方法:一個線程如果join了另一個線程,那麼這個線程就必須等另一個線程

的run方法運行結束(線程結束)。====調方法

Thread.yield方法:讓出CPU的資源,讓其它的線程執行。

Thread.setPriority:設置線程的優先級。優先級,CPU調度的時間也就越長。

Max = 10

Normal = 5

Min = 0;

取值範圍在0---10之間即可。

Thread.seleep:線程的休眠。與yield不同的,它是休眠。可以被喚醒。

停止線程的方法:

以前老的實現方式

stop/destory方法。會引起死鎖(結合疊代器與集合的方式理解死鎖)

6:為什麼要使用線程同步:

A:當多個線程同時訪問一個資源時,會造成資源數據的不同步。因此要對資源加鎖。

這一加鎖的過程,就是在線程並發時,只有一個線程能夠訪問到該資源。因此叫做

線程的同步。

7:鎖的概念

8:到底鎖什麼:

鎖住當前方法(當前變量)所在的對象和類。

9:怎麼實現線程同步:

A:方法同步。

B:代碼塊同步:

方法同步與代碼塊同步的區別:

方法同步:鎖住當前方法所在的對象。因此執行整個方法直到完成,一直鎖住當前對象。

代碼塊同步:對象的鎖只在執行synchronized這一部分的代碼塊。其它的代碼塊也會出

現線程同步的問題。

synchronized (this) {

count = count + 1;

try {

Thread.sleep(2000);

} catch (Exception e) {

e.printStackTrace;

}

System.out.println("當前線程=" + Thread.currentThread.getName

+ ",Count值 =" + count);

}

System.out.println(count);

10:鎖的粗粒度:

鎖的粗粒度只能在代碼塊同步中更改鎖的大小。方法的同步的是沒有辦法更改的。

11:線程之間的協作:

wait;/notify;

您可能感興趣
免責聲明:本文內容來源于紅黑聯盟,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM