Java多執行緒

2021-08-03 18:58:18 字數 827 閱讀 2171

1.同步鎖

即通過synchronized關鍵字來進行同步,實現對競爭資源的互斥訪問的鎖。同步鎖的原理是,對於每乙個物件,有且僅有乙個同步鎖;不同的執行緒能共同訪問該同步鎖

但是,在同乙個時間點,該同步鎖能且只能被乙個執行緒獲取到。這樣,獲取到同步鎖的執行緒就能進行cpu排程 ,從而在cpu上執行;而沒有獲取到同步鎖的執行緒,必須進行等

待,直到獲取到同步鎖之後才能繼續執行。這 就是,多執行緒通過同步鎖進行同步的原理!

2.lock介面

juc包中的 lock 介面支援那些語義不同(重入、公平等)的鎖規則。所謂語義不同,是指鎖可是有"公平機制的鎖"、"非公平機制的鎖"、"可重入的鎖"等等。"公平機制"是指"不同執行緒獲取鎖的機制是公平的",而"非公平機制"則是指"不同執行緒獲取鎖的機制是非公平的","可重入的鎖"是指同乙個鎖能夠被乙個執行緒多次獲取

3.readwritelock

readwritelock 介面以和lock類似的方式定義了一些讀取者可以共享而寫入者獨佔的鎖。juc包只有乙個類實現了該介面,

即 reentrantreadwritelock,因為它適用於大部分的標準用法上下文。但程式設計師可以建立自己的、適用於非標準要求的實現。

4.reentrantlock

reentrantlock是獨佔鎖。所謂獨佔鎖,是指只能被獨自占領,即同乙個時間點只能被乙個執行緒鎖獲取到的鎖。reentrantlock鎖包括"公平的reentrantlock"和"非公平的reentrantlock"。"公平的reentrantlock"是指"不同執行緒獲取鎖的機制是公平的",而"非公平的  reentrantlock"則是指"不同執行緒獲取鎖的機制是非公平的",reentrantlock是"可重入的鎖"。

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