導航:首頁 > 編程語言 > java線程本地變數

java線程本地變數

發布時間:2023-11-07 01:37:54

1. java中怎麼把一個線程裡面的變數傳到另一個線程

把這個變數定義提取到線程外部, 線程通過引用持有這個變數, 這樣就可以實現變數的共享, 這個時候就要注意線程同步的問題.

2. java 變數和多線程問題

1、ArrayList和Vector的區別
這兩個類都實現了List介面(List介面繼承了Collection介面),他們都是有序集合,即存儲在這兩個集合中的元素的位置都是有順序的,相當於一種動態的數組,我們以後可以按位置索引號取出某個元素,,並且其中的數據是允許重復的,這是HashSet之類的集合的最大不同處,HashSet之類的集合不可以按索引號去檢索其中的元素,也不允許有重復的元素(本來題目問的與hashset沒有任何關系,但為了說清楚ArrayList與Vector的功能,我們使用對比方式,更有利於說明問題)。

接著才說ArrayList與Vector的區別,這主要包括兩個方面:

(1)同步性:

Vector是線程安全的,也就是說是它的方法之間是線程同步的,而ArrayList是線程序不安全的,它的方法之間是線程不同步的。如果只有一個線程會訪問到集合,那最好是使用ArrayList,因為它不考慮線程安全,效率會高些;如果有多個線程會訪問到集合,那最好是使用Vector,因為不需要我們自己再去考慮和編寫線程安全的代碼

備註:對於Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問題,記住Vector與Hashtable是舊的,是java一誕生就提供了的,它們是線程安全的,ArrayList與HashMap是java2時才提供的,它們是線程不安全的。所以,我們講課時先講老的。

(2)數據增長:

ArrayList與Vector都有一個初始的容量大小,當存儲進它們裡面的元素的個數超過了容量時,就需要增加ArrayList與Vector的存儲空間,每次要增加存儲空間時,不是只增加一個存儲單元,而是增加多個存儲單元,每次增加的存儲單元的個數在內存空間利用與程序效率之間要取得一定的平衡。Vector默認增長為原來兩倍,而ArrayList的增長策略在文檔中沒有明確規定(從源代碼看到的是增長為原來的1.5倍)。ArrayList與Vector都可以設置初始的空間大小,Vector還可以設置增長的空間大小,而ArrayList沒有提供設置增長空間的方法。
總結:即Vector增長原來的一倍,ArrayList增加原來的0.5倍。

2、HashMap和Hashtable的區別
HashMap 是Hashtable 的輕量級實現(非線程安全的實現),他們都完成了Map 介面,主要
區別在於HashMap 允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap 允許將null 作為一個entry 的key 或者value,而Hashtable 不允許。
HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因為contains
方法容易讓人引起誤解。
Hashtable 繼承自Dictionary 類,而HashMap 是Java1.2 引進的Map interface 的一個實現。
最大的不同是,Hashtable 的方法是Synchronize 的,而HashMap 不是,在多個線程訪問
Hashtable 時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable 和HashMap 採用的hash/rehash 演算法都大概一樣,所以性能不會有很大的差異。

3、char型變數中能不能存貯一個中文漢字?為什麼?
char型變數是用來存儲Unicode編碼的字元的,unicode編碼字元集中包含了漢字,所以,char型變數中當然可以存儲漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字元集中,那麼,這個char型變數中就不能存儲這個特殊漢字。補充說明:unicode編碼佔用兩個位元組,所以,char類型的變數也是佔用兩個位元組。

char型變數是用來存儲Unicode編碼的字元的,unicode編碼字元集中包含了漢字,所以,char型變數中當然可以存儲漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字元集中,那麼,這個char型變數中就不能存儲這個特殊漢字。補充說明:unicode編碼佔用兩個位元組,所以,char類型的變數也是佔用兩個位元組。

4、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
多線程有兩種實現方法。一種是繼承Thread類,一種是實現Runnable介面!
同步有兩種方法。一種同步方法,一種同步代碼,分別是synchronized,wait與notify

3. java線程存放在jvm的哪個區域方法又存放在哪個區呢

聊到JAVA中的方法,大多數人對於方法存儲在方法區還是棧區(虛擬機棧)是很迷茫的。其實方法是存在方法區的下面我們就細細說一下JVM中的 方法區 VS 棧區方法區:用於存儲已被虛擬機載入的類信息、常量、靜態變數、即時編譯器編譯後的代碼等數據,方法編譯出的位元組碼也是保存在這

4. JAVA線程本地變數ThreadLocal和私有變數的區別

ThreadLocal變數 作用域是各自線程內部。私有變數作用域 屬於該類的實例。

所以, ThreadLocal變數專 只用於線程內部共享,是線程安全的屬。
私有變數線程不安全,例如,利用一個Runnable實例啟動2個線程,這2個線程就可以共同擁有 私有變數。

閱讀全文

與java線程本地變數相關的資料

熱點內容
計算機網路章節練習 瀏覽:999
單片機的外部中斷程序 瀏覽:48
表格批量更名找不到指定文件 瀏覽:869
js的elseif 瀏覽:584
3dmaxvray視頻教程 瀏覽:905
imgtool工具中文版 瀏覽:539
java幫助文件在哪裡 瀏覽:965
win10切換輸入語言 瀏覽:696
haier電視網路用不了怎麼辦 瀏覽:361
蘋果6手機id怎麼更改 瀏覽:179
米家掃地機器人下載什麼app 瀏覽:82
如何在編程貓代碼島20種樹 瀏覽:915
手機基礎信息存儲在哪個文件 瀏覽:726
如何查找手機備份文件 瀏覽:792
內存清理工具formac 瀏覽:323
iphone過濾騷擾電話 瀏覽:981
wap網路如何使用微信 瀏覽:699
手機迅雷應用盒子在哪個文件夾 瀏覽:351
windows8網路連接 瀏覽:442
怎麼快速增加qq群人數 瀏覽:919

友情鏈接