线程池原理Java
2015-09-08 22:13
639 查看
public class ThreadPool { int maxCount = 3; AtomicInteger count =new AtomicInteger(0);// 当前开的线程数 count=0 LinkedList<Runnable> runnables = new LinkedList<Runnable>(); public void execute(Runnable runnable) { runnables.add(runnable); if(count.incrementAndGet()<=3){ createThread(); } } private void createThread() { new Thread() { @Override public void run() { super.run(); while (true) { // 取出来一个异步任务 if (runnables.size() > 0) { Runnable remove = runnables.remove(0); if (remove != null) { remove.run(); } }else{ // 等待状态 wake(); } } } }.start(); } }
代码简单表示了一下线程池的原理,供初学者参考。
说明如下:
runnables是一个异步任务的队列,
execute方法是执行异步任务的方法,由用户调用,其算法是,将所需要执行的异步任务添加到队列中,等待执行,然后如果需要就创建新的线程;
createThread方法就是线程创建的方法,由execute方法调用,其算法是,直接创建一个新的线程,并且,一旦创建,就不需关闭,无限循环执行异步任务队列总的runnable任务;
相关文章推荐
- OpenJDK与HashMap……放心地教这个老家伙一些新(非堆!)技巧
- JAVA Socket地址绑定
- Java集合
- Struts2的文件下载
- 阅读《21天学通Java》
- Struts2的文件上传
- Java基础知识回顾
- struts2的自定义拦截器和配置
- java.lang.NoClassDefFoundError: JspException
- java序列化
- java内部类的使用小结
- javax.servlet.jsp.JspException cannot be resolved to a type
- Java中的常用类与集合框架(1)
- Java中的包
- SVN安装---本机安装---SVN 安装到eclipse中(6)
- Java学习积累one
- 插入排序java代码
- [转载]IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)
- JAVA基础12--JDBC