1
A
回答
6
这似乎是你在找什么。 http://java.dzone.com/news/java-concurrency-thread-pools
public class ThreadPool {
private BlockingQueue taskQueue = null;
private List<PoolThread> threads = new ArrayList<PoolThread>();
private boolean isStopped = false;
public ThreadPool(int noOfThreads, int maxNoOfTasks){
taskQueue = new BlockingQueue(maxNoOfTasks);
for(int i=0; i<noOfThreads; i++){
threads.add(new PoolThread(taskQueue));
}
for(PoolThread thread : threads){
thread.start();
}
}
public void synchronized execute(Runnable task){
if(this.isStopped) throw
new IllegalStateException("ThreadPool is stopped");
this.taskQueue.enqueue(task);
}
public synchronized void stop(){
this.isStopped = true;
for(PoolThread thread : threads){
thread.stop();
}
}
}
public class PoolThread extends Thread {
private BlockingQueue taskQueue = null;
private boolean isStopped = false;
public PoolThread(BlockingQueue queue){
taskQueue = queue;
}
public void run(){
while(!isStopped()){
try{
Runnable runnable = (Runnable) taskQueue.dequeue();
runnable.run();
} catch(Exception e){
//log or otherwise report exception,
//but keep pool thread alive.
}
}
}
public synchronized void stop(){
isStopped = true;
this.interrupt(); //break pool thread out of dequeue() call.
}
public synchronized void isStopped(){
return isStopped;
}
}
+0
谢谢大家... :)其实我想要得到的线程池的感觉。我想知道内部工作如线程如何被选中(等待和通知)并分配任务。 – user1624173
相关问题
- 1. Java线程池
- 2. 线程池的Java
- 3. 线程池例外
- 4. Windows API线程池简单示例
- 5. C++ 11带线程的线程池示例
- 6. 有关C#线程池的帮助
- 7. C#,有关线程池的问题
- 8. java等待池中的所有线程
- 9. 带线程池的Java线程队列
- 10. Java的线程池同步
- 11. 困惑Java的线程池
- 12. Java中的线程池
- 13. Java多线程示例
- 14. 线程与NSAutorelease池有什么关系?
- 15. 无法关闭线程池
- 16. Java线程池大小(Executors)
- 17. Java - 重用线程池
- 18. Java线程池功能
- 19. 有很多线程的线程池queueuserworkitem
- 20. java的多线程示例8
- 21. 查询有关Java线程
- 22. 线程池中的线程
- 23. boost :: asio中动态线程池的示例
- 24. hawtdispatch:一个简单的线程池示例
- 25. 困惑的Java线程池和ReentrantLock的
- 26. ASP.Net中的线程池定期关闭
- 27. 相关任务的线程池
- 28. windows线程池和CLR线程池有什么区别
- 29. 播放2线程池:默认池VS阿卡池与Java
- 30. Java中的信号量和线程池
执行程序是Java SE库的一部分。你为什么不想用它们?他们为管理线程提供了更多有用的API。 –
我读过这个部分..它有一个自己的例子,你将不得不处理所有的事情。 http://www.ibm.com/developerworks/library/j-jtp0730/index.html –