JDK執行緒安全問題剖析

2021-09-03 01:21:39 字數 826 閱讀 1818

private final concurrentmap> elapsedmap = new concurrenthashmap>();

public listlistsortedelapsed(string signature)else

return longs;

}

先看jdk排序工具類的源**

@suppresswarnings("unchecked")

public static > void sort(listlist)

@suppresswarnings()

default void sort(comparator super e> c)

}

public object toarray()
那麼問題來了toarray這段**應用不當就會有執行緒安全的問題

設想這個場景:

a執行緒對list進行toarray操作,a先申請size大小的空間

b執行緒對list進行插入操作

這時候就會報

正確姿勢

public listlistsortedelapsed(string signature)

return longs;

}

執行緒安全問題

執行緒安全問題導致的原因 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒有徹底執行完畢,此時另乙個執行緒參與進來執行,導致共享資料的錯誤。執行緒安全解決辦法 對多條操作共享的語句,每次只能讓乙個執行緒執行完成。在執行的過程中,其他執行緒不可以參與執行。解決方案 同步...

執行緒安全問題

是指 在多個執行緒進行的情況下對全域性變數或靜態變數進行寫的操作的時候出現的資料上的問題,就是執行緒安全的問題,在讀的時候不會出現執行緒的問題 即 public void run catch interruptedexception e synchronized this 即 package com...

執行緒安全問題

由於cpu輪流切換執行緒導致某執行緒沒來的及執行完,執行緒的共享變數便直接被其他執行緒所修改。package 執行緒安全問題 public class mainclass2 class ticket extends threadcatch interruptedexception e system....