執行緒池在現在的系統和框架中十分常見。明白執行緒池的思想原理,不僅對學習執行緒池有
很大的幫助。對理解一些系統的執行緒池實現也有很大的幫助。下面是我自己簡單實現的一
個執行緒池。用以對執行緒的簡單理解。
執行緒的實現原理很簡單:
> 執行緒池物件包含以下元件:工作者佇列,job佇列;
> 使用者通過執行緒池物件新增刪除工作者,執行緒池物件維持工作者物件這個池
和工作者的實際工作;
> 工作者池中的執行緒在使用者沒用明確關閉前不斷的從job佇列拿取job執行job。
好了,一切看**:
1. 面向介面程式設計,首先建立threadpool介面:
/**
* 執行緒池介面
* @author yum
* */
public
inte***ce
threadpool
extends
runnable>
2. 實現threadpool介面:/**
* 自定義預設執行緒池
* @author yum
* * @param */
public
class
defaultthreadpool
extends
runnable> implements
threadpool
public defaultthreadpool(int num)
@override
public
void execute(job job)
}@override
public
void shutdown()
}@override
public
void addworkers(int num)
}@override
public
void removeworkers(int num)
}this.workernum-=num;}}
@override
public
int getjobsize()
//初始化執行緒工作者
private
void initworkers(int num)
}//工作者執行緒
class
worker
implements
runnable catch (interruptedexception e)
}//取出乙個job
job = jobs.removefirst();
}if(job!=null) catch (exception e) }}
}public
void shutdown()
}}
3. 測試**如下:public
class
thistest
}static
class
countthread
implements
runnable}}
}
簡單執行緒池實現
執行緒池可以處理多執行緒問題,只要將任務放到任務佇列中,執行緒池中的執行緒就會從佇列中取任務,以預設的優先順序開始執行,如果你的任務數大於正在工作的執行緒數,則執行緒池將會建立一根新的執行緒來輔助工作,但是永遠都不會超過執行緒池中線程的最大值。執行緒池的結構 pragma once include ...
簡單執行緒池實現
1.用於執行大量相對短暫的任務 2.當任務增加的時候能夠動態的增加執行緒池中線程的數量值到達乙個閾值 3.當任務執行完畢的時候,能夠動態的銷毀執行緒池中的執行緒 4.該執行緒池的實現本質上也是生產者與消費者模型的應用。生產者執行緒向任務佇列新增任務,一旦佇列有任務到來,如果有等待 執行緒就喚醒來執行...
簡單執行緒池實現
1.用於執行大量相對短暫的任務 2.當任務增加的時候能夠動態的增加執行緒池中線程的數量值到達乙個閾值 3.當任務執行完畢的時候,能夠動態的銷毀執行緒池中的執行緒 4.該執行緒池的實現本質上也是生產者與消費者模型的應用。生產者執行緒向任務佇列新增任務,一旦佇列有任務到來,如果有等待執行緒就喚醒來執行任...