多執行緒和同步佇列

2021-09-01 04:48:24 字數 875 閱讀 9807

最近要割接個專案,要把另外乙個公司的資料庫裡的一張表倒到我們庫里,資料有一億三千多萬吧。正號也符合生產者和消費者的狀況。以前用過點執行緒池和同步佇列,,寫個例子,讓大家拍磚。不多說了,直接上**,

1. 執行緒池

public class threadpool

@override

public void run() }

} }3.實現同步佇列

public class syncdataqueue

public static syncdataqueue getinstance()

return instance; }

public blockingqueue< mode > getblockingqueue() }

4.匯入檔案,並啟動執行緒池

public class filethread extends thread

@override

public void run() catch (filenotfoundexception e) catch (ioexception e) catch (interruptedexception e) }

}public void getsmslistbyfilethread(file file)

throws filenotfoundexception, ioexception, interruptedexception }

public string getpath()

public void setpath(string path)

/***  不加索引每分鐘百萬上下, 加了索引有點慘不忍睹。 */

public static void main(string args) }

執行緒程式設計 同步佇列

我們經常會採用生產者 消費者關係的兩個執行緒來處理乙個共享緩衝區的資料。例如一 個生產者執行緒接受使用者資料放入乙個共享緩衝區裡,等待乙個消費者執行緒對資料取出處理。但是如果緩衝區的太小而生產者和消費者兩個非同步執行緒的速度不同時,容 易出現乙個執行緒等待另乙個情況。為了盡可能的縮短共享資源並以相同...

CLH同步佇列

aqs內部維護著乙個fifo佇列,該佇列就是clh同步佇列。clh同步佇列是乙個fifo雙向佇列,aqs依賴它來完成同步狀態的管理,當前執行緒如果獲取同步狀態失敗時,aqs則會將當前執行緒已經等待狀態等資訊構造成乙個節點 node 並將其加入到clh同步佇列,同時會阻塞當前執行緒,當同步狀態釋放時,...

(原創)C 同步佇列

同步佇列作為乙個執行緒安全的資料共享區,經常用於執行緒之間資料讀取,比如半同步半非同步執行緒池的同步佇列。其實做起來比較簡單,要用到list 鎖和條件變數,條件變數的作用是在佇列滿了或者空了的時候等待通知。先看乙個簡單的同步佇列 include include include include inc...