在常用到的集合框架的實現類中,arraylist、linkedlist、hashmap都是執行緒不安全的。
在有多個執行緒訪問並修改他們的時候就會出現執行緒安全問題。
解決辦法:
collections類提供了多個方法將他們包裝為執行緒安全的集合,通過api可以得到
static
list
synchronizedlist(list
list)
返回指定列表支援的同步(執行緒安全的)列表。
static
map
synchronizedmap(map
m)
返回由指定對映支援的同步(執行緒安全的)對映。
static
set
synchronizedset(set
s)
返回指定 set 支援的同步(執行緒安全的)set。
運用上面提供的方法可以得到:
list list = collections.synchronizedlist(new arraylist());
map map = collections.synchronizedmap(new hashmap());
set set = collections.synchronizedset(new hashset());
更多詳情,可以翻閱api的collections類
執行緒安全問題
執行緒安全問題導致的原因 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒有徹底執行完畢,此時另乙個執行緒參與進來執行,導致共享資料的錯誤。執行緒安全解決辦法 對多條操作共享的語句,每次只能讓乙個執行緒執行完成。在執行的過程中,其他執行緒不可以參與執行。解決方案 同步...
執行緒安全問題
是指 在多個執行緒進行的情況下對全域性變數或靜態變數進行寫的操作的時候出現的資料上的問題,就是執行緒安全的問題,在讀的時候不會出現執行緒的問題 即 public void run catch interruptedexception e synchronized this 即 package com...
執行緒安全問題
由於cpu輪流切換執行緒導致某執行緒沒來的及執行完,執行緒的共享變數便直接被其他執行緒所修改。package 執行緒安全問題 public class mainclass2 class ticket extends threadcatch interruptedexception e system....