多執行緒併發操作

2021-06-19 17:40:18 字數 1599 閱讀 7935

閒來無事,就搞了搞多執行緒的東西,今天就將要寫的部分東西貼到下面,僅供菜鳥學習。。。

不多說了,直接貼**檢視:

public class threadpool_util extends threadgroup

}/** 向工作佇列中加入乙個新任務,由工作執行緒去執行該任務 */

public synchronized void execute(runnable task)

if (task != null)

}/** 從工作佇列中取出乙個任務,工作執行緒會呼叫此方法 */

private synchronized runnable gettask(int threadid)

throws interruptedexception

wait(); // 如果工作佇列中沒有任務,就等待任務

}return (runnable) workqueue.removefirst(); // 反回佇列中第乙個元素,並從佇列中刪除

}/** 關閉執行緒池 */

public synchronized void closepool()

}/** 等待工作執行緒把所有任務執行完畢 */

public void waitfinish()

thread threads = new thread[activecount()]; // activecount()

// 返回該執行緒組中活動執行緒的估計值。

int count = enumerate(threads); // enumerate()方法繼承自threadgroup類,根據活動執行緒的估計值獲得執行緒組中當前所有活動的工作執行緒

for (int i = 0; i < count; i++) catch (interruptedexception ex) }}

/*** 內部類,工作執行緒,負責從工作佇列中取出任務,並執行

* * @author sunnylocus

*/private class workthread extends thread

public void run() catch (interruptedexception ex)

// 如果gettask()返回null或者執行緒執行gettask()時被中斷,則結束此執行緒

if (task == null)

return;

try catch (throwable t)

}// end while

}// end run

}// end workthread

public static void main(string args) throws interruptedexception {

threadpool pool = new threadpool(3); // 建立乙個有個3工作執行緒的執行緒池

thread.sleep(5000); // 休眠5秒,以便讓執行緒池中的工作執行緒全部執行

pool.waitfinish(); //等待所有任務執行完畢

pool.closepool(); //關閉執行緒池

執行緒池的出現主要是為了提高效率,節省資源,方便利用而設計的。使用它的弊端就是:消耗系統的資源比較多,需要大的記憶體去支援,否則就會宕機。

C 併發操作 多執行緒

c 11 新標準中引入了幾個標頭檔案來支援多執行緒程式設計 thread 包含std thread類以及std this thread命名空間。管理執行緒的函式和類在 中宣告.atomic 包含std atomic和std atomic flag類,以及一套c風格的原子型別和與c相容的原子操作的函式...

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...

多執行緒併發

更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...