執行緒池
1、執行緒是稀缺資源,使用執行緒池可以減少建立和銷毀執行緒的次數,每個工作執行緒都可以重複使用。
2、可以根據系統的承受能力,調整執行緒池中工作執行緒的數量,防止因為消耗過多記憶體導致伺服器崩潰。
執行緒池的實現原理
提交乙個任務到執行緒池中,執行緒池的處理流程如下:
1、判斷執行緒池裡的核心執行緒是否都在執行任務,如果不是(核心執行緒空閒或者還有核心執行緒沒有被建立)則建立乙個新的工作執行緒來執行任務。如果核心執行緒都在執行任務,則進入下個流程。
2、執行緒池判斷工作佇列是否已滿,如果工作佇列沒有滿,則將新提交的任務儲存在這個工作佇列裡。如果工作佇列滿了,則進入下個流程。
3、判斷執行緒池裡的執行緒是否都處於工作狀態,如果沒有,則建立乙個新的工作執行緒來執行任務。如果已經滿了,則交給飽和策略來處理這個任務。
執行緒狀態
用for迴圈刪除list中的資料:
會導致list中的序號錯位,導致漏處理一些資料。
解決辦法,倒序刪除。或者用迭代器iterator刪除。
hashmap為什麼是執行緒不安全的:
總結版:hashmap在put的時候,插入的元素超過了容量(由負載因子決定)的範圍就會觸發擴容操作,就是rehash,這個會重新將原陣列的內容重新hash到新的擴容陣列中,在多執行緒的環境下,存在同時其他的元素也在進行put操作,如果hash值相同,可能出現同時在同一陣列下用鍊錶表示,造成閉環,導致在get時會出現死迴圈,所以hashmap是執行緒不安全的。
原文:深拷貝和淺拷貝的區別是什麼?
淺拷貝:被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺拷貝僅僅複製所考慮的物件,而不複製它所引用的物件。
深拷貝:被複製物件的所有變數都含有與原來的物件相同的值,而那些引用其他物件的變數將指向被複製過的新物件,而不再是原有的那些被引用的物件。換言之,深拷貝把要複製的物件所引用的物件都複製了一遍。
知識鞏固1
1.什麼是軟體測試 根據側重點的不同,主要有三種觀點 a.軟體測試就是為了發現錯誤而執行程式的過程 b.使用人工或工具測試某個系統的過程,其目的在於檢驗它是否滿足需求的規定或是弄清預期結果與實際結果之間的差別 c.軟體測試是一種重要的軟體質量保證活動 2.什麼是白盒測試?白盒測試又叫結構測試,邏輯驅...
jquery知識鞏固
1.jquery中的index方法和eq方法 index 方法 index 獲取的索引值是相對同兄弟元素,即同乙個父元素,所以首先要確認一下這個元素的兄弟是誰,例如 當遇到以上的情況很容易就覺得要在img元素上繫結事件,不行,因為img的兄弟元素其實只有他自己,所以要在li上面繫結,這樣子繫結的每一...
Android知識鞏固 Binder
乙個程序空間分為 使用者空間 核心空間 kernel 即把程序內 使用者 核心 隔離開來 程序內 使用者 與 核心 進行互動 稱為系統呼叫 程序隔離 程序隔離是為保護作業系統中程序互不干擾而設計的一組不同硬體和軟體的技術。這個技術是為了避免程序a寫入程序b的情況發生。程序的隔離實現,使用了虛擬位址空...