Java的多執行緒

2021-07-31 16:33:42 字數 1550 閱讀 6142

一、建立

1、新建乙個類,實現runnable介面,重寫run方法,在run方法內寫要完成的任務,在main函式中,使用該類的物件 .run(),此時是使用main方法的執行緒,並非新建乙個執行緒。

class

task

implements

runnable

}public

class

testthread

}

2.新建乙個類,實現runnable介面,重寫run方法,在run方法內寫要完成的任務,在main函式中,將該類例項作為新建thread的引數,該新建執行緒呼叫 .start() ,開啟乙個新的執行緒。

class

task

implements

runnable

}public

class

testthread

}

3、新建乙個類,實現runnable介面,使用執行緒池

class

task

implements

runnable

}public

class

testthread

}}

4.直接繼承thread類

class task extend thread

}public

case

class testthread

}

二、

thread具有建立執行緒的能力,其常用的方法:

start

啟動執行緒並自動執行run方法

run

包含需要執行的**

sleep

將執行緒進入休眠狀態,但不釋放物件鎖

yield

便是可以讓出cpu,具體讓不讓由cpu決定

join

使用t.join()加入乙個執行緒t,使用了該語句的執行緒將被掛起直到執行緒t生命結束才恢復,不過可以為join方法設定乙個超時引數,若超時則join方法總能返回

interrupt

使執行緒中斷

wait方法和notify方法

wait方法:在其他執行緒呼叫物件的notify方法或者notifyall方法前,或者超過指定的時間量前,導致當前執行緒等待。執行緒呼叫wait方法,釋放它對鎖的擁有權,然後等待另外的執行緒來通知它(通知的方式是notify或者notifyall方法),這樣它才能重新獲得鎖的擁有權和恢復執行。

notify方法:喚醒乙個等待當前物件的鎖的執行緒。notify方法應該是被擁有物件的鎖的執行緒所呼叫。被喚醒的執行緒是不能被執行的,需要等到當前執行緒放棄這個物件的鎖。

notifyall方法:喚醒所有等待鎖的執行緒。

上面的三個方法要求在呼叫時執行緒已經獲得了物件的鎖,因此對這兩個方法的呼叫需要放在synchronized方法或synchronized塊中。

setpriority(int prioritylevel)

設定優先順序(0-10),使用 getpriority()可以獲取執行緒的優先順序

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...