這些都沒用過,也沒見人用過,專案中用的是redis佇列/*
* 多執行緒之間互動
* 執行緒閥是一種執行緒與執行緒之間相互制約和互動的機制
* *
* 阻塞佇列blockingqueue
* * queue 佇列:先進顯出
* deque 雙端佇列:兩端都可以進出的佇列,當約束一端的時候就成了棧結構
* * 阻塞佇列 blockingqueue 是乙個支援兩個附加操作的佇列
* 在隊列為空時,獲取元素的執行緒會等待佇列變為非空
* 當佇列滿時:儲存元素的執行緒會等佇列可用
* * 阻塞佇列常用於生產者和消費者的場景
*/public
static
void main(string args) {
/** 陣列阻塞佇列
* 典型的有界快取區
*/arrayblockingqueue arrayblockingqueue = new arrayblockingqueue<>(1);
/** 鍊錶阻塞佇列
*/linkedblockingdeque linkedblockingdeque = new linkedblockingdeque<>();
//優先順序阻塞佇列 支援優先順序排序的無界佇列
// 優先順序的判斷痛毆建構函式傳入的compator物件決定
// 不會阻塞資料的生產者,只會沒有可消費的資料時,阻塞資料的消費者
// 生產者速度快於消費者速度,時間一長,會耗盡所有的可用堆記憶體空間
// 內部控制線程同步的鎖採用的是公平鎖
priorityblockingqueue priorityblockingqueue = new priorityblockingqueue<>();
// 延時佇列
// 快取系統的設計
// 定時任務排程
// 作為delayqueue元素的時候必須實現delayed介面的兩個方法
delayqueuedelayqueue = new delayqueue<>();
// 同步佇列
// 是乙個不儲存元素的阻塞佇列,每乙個put操作必須等待乙個take操作,否則不能繼續新增元素,
// 負責傳遞資料,
// 本身不存任何元素
// 兩種機制
// 公平模式 :阻塞多餘的生產和消費者
// 非公平模式:很容易出現飢渴現象
synchronousqueue synchronousqueue = new synchronousqueue<>();
// 鍊錶雙向阻塞佇列
linkedblockingdeque linkedblockingdeque2 = new linkedblockingdeque<>();
// 鍊錶傳輸佇列
// 是乙個由鍊錶結構組成的無界傳輸阻塞佇列
// 雙重資料結構
// 方法都是通過兩個步驟完成:保留與完成
linkedtransferqueue linkedtransferqueue = new linkedtransferqueue<>();
就當是了解了吧,
執行緒 ThreadLocal使用及資料結構
1 threadlocal的使用 threadlocal的確是資料的隔離,但是並非資料的複製,而是在每乙個執行緒中建立乙個新的資料物件,然後每乙個執行緒使用的是不一樣的。public class threadlocaltest public integer getnextstr public sta...
對於資料結構的初步了解
對於資料結構在我沒學這門課程之前對它的理解是 資料結構是可以把很多資料整合到一起,然後寫乙個適合處理這批資料的演算法,這樣可以節省計算機的記憶體。但是學完第一章緒論後我對這門課有了更深刻的理解。首先是對資料結構的組成有了了解 1.資料的邏輯結構 2.資料的儲存結構 3.資料的運算 邏輯結構的表示 1...
C 多執行緒的使用 一
一.本次主要對以下3點進行輸出 1.執行緒的建立 2.前台執行緒與後台執行緒 3.執行緒的優先順序 二.準備工作 1.using system.threading 引用執行緒類 2.建立winform窗體及控制項 三.程式說明 thread drawthread null 定義執行緒1,並設定其初始...