什麼是執行緒安全?
簡單的概括就是,多個執行緒訪問同乙個類(物件或者方法),這個類始終可以表現出正確的行為,那麼這個類(物件或者方法),就是執行緒安全的。
package com.jc.thread;
public class thread01 extends thread
/*** 啟動5個執行緒,訪問同乙個資源
* @param args
*/public static void main(string args)
}
列印結果如下:
t1---3
t3---2
t2---3
t4---1
t5---0
表明,多個執行緒訪問同一資源時,所表現的結果跟我們預期不一致,說明不是執行緒安全的。
引入syncronized,syncronized所修飾的**,我們稱之為「臨界區」或者「互斥區」
當多個執行緒訪問run方法的時候,首先需要拿到資源鎖,這個執行緒會不斷的競爭鎖資源,直到拿到這把鎖為止。(也會有鎖資源競爭的問題)
public synchronized void run()
列印結果如下:
t1---4
t5---3
t4---2
t3---1
t2---0
網際網路併發程式設計(1) 執行緒基礎
1 執行緒安全概念 當多個執行緒訪問某乙個類 物件或方法 時候,這個類始終都能表現出正確的行為,那麼這個類 物件或方法 就是執行緒安全的。2 synchronized 可以在任意物件以及方法上加鎖,而加鎖的這段 稱為互斥區或者臨界區。案例1 不加synchronized package com.wu...
網際網路介面安全程式設計
1 使用者資訊脫敏,包括但不限於密碼 姓名 郵箱 位址 證件號等,必須加密後落庫。方式a md5 salt。md5準確說不是加密,只是資訊摘要,容易受到彩虹表攻擊,這裡一定要加salt使用。方式b 對稱加密。2 防串改。採用https協議。在http的基礎上加上了ssl,如果要破解,要破ca證書 拿...
網際網路併發程式設計(3) 髒讀
內容 資料的髒讀 對於物件的同步和非同步的方法中,我們在設計程式時候要注意問題的整體性,否則就會出現資料不一致情況,最典型的就是髒讀。髒讀的定義 髒讀又稱無效資料的讀出,是指在資料庫訪問中,事務t1將某一值修改,然後事務t2讀取該值,此後t1因為某種原因撤銷對該值的修改,這就導致了t2所讀取到的資料...