java多執行緒basic

2021-08-17 03:26:32 字數 1613 閱讀 4536

程序的概述:正在執行的應用程式就是乙個程序,執行緒是依賴於程序。

執行緒的概述:每乙個應用程式中可以有多個任務,那麼每乙個任務就是乙個執行緒。

多程序的系統的意義:提高了cpu的使用率

多執行緒的意義:提高了應用程式的使用率

cpu在不同的執行緒之間進行快速的切換,執行緒的執行具有隨機性。

a.繼承thread類

1.寫乙個類繼承自thread

2.重寫run方法,(run方法中是子執行緒需要執行的**)

3.建立該類的物件

4.開啟執行緒  start()

b.實現runnable介面

1.寫乙個類實現runnable介面

2.實現runnable介面中run方法,(run方法中是子執行緒需要執行的**)

3.建立該類的物件

4.建立thread物件,將上一步的物件作為構造方法引數傳遞進來

5.開啟執行緒 start()

a.setname(string name); 設定執行緒的名稱

b.string getname() ; 獲取執行緒的名稱

c.static thread currentthread();  thread.currentthread();  獲取當前執行的執行緒

d.static void sleep(long mills) ; 讓當前執行緒休眠多少毫秒

e.stop() 

a.分時排程模型(mac)

b.搶占式排程模型

多個執行緒同時去搶占cpu的執行權,誰搶占到了,那麼cpu就執行誰。

如何去判斷會出現資料的安全問題:

1.是否是多執行緒環境

2.是否有共享的資料

3.是否有多條語句共同操作共享的資料

如何解決的?

使用同步**塊

格式:synchronized(鎖物件)

注意事項:多個執行緒的鎖物件必須要是同乙個物件。

同步**塊的作用:如果一段**被同步**塊括起來,那麼當乙個執行緒在執行這麼一部分**的時候

其餘執行緒不能進來執行,只有等到當前的執行緒執行完畢這麼一部分**以後,其餘的執行緒才有可能去執行

這麼一部分**。

同步方法:如果乙個方法中所有的**都被同步**塊括起來,我們可以將這個方法宣告成乙個同步方法。

就是在方法的宣告上加上乙個synchronized關鍵字。

注意事項:1.同步方法,鎖物件是this

2.靜態的同步方法,鎖物件是當前類的位元組碼檔案物件

stringbuffer   vector   hashtable

collections.synchronized***(***): 將乙個執行緒不安全的集合轉換成乙個執行緒安全的集合

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...