摘要:
* 图元和画布* Bitmap* Bitmap.CompressFormat* Bitmap.Config* BitmapFactory* BitmapFactory.Options* Canvas* Canvas.VertexMode* Movie* NinePatch* Picture* 非几何属性* Color* Paint* Paint.Align* Paint.Cap* Paint.Join* Paint.Style* Paint.FontMetrics* Typeface* ColorMatrix* PixelFormat* PorterDuff* PorterDuff.Mode* 阅读全文
摘要:
背景前段时间一个项目中因为涉及大量的线程开发,把jdk cocurrent的代码重新再过了一遍。这篇文章中主要是记录一下学习ThreadPoolExecutor过程中容易被人忽略的点,Doug Lea的整个类设计还是非常nice的正文先看一副图,描述了ThreadPoolExecutor的工作机制:整个ThreadPoolExecutor的任务处理有4步操作:第一步,初始的poolSize < corePoolSize,提交的runnable任务,会直接做为new一个Thread的参数,立马执行第二步,当提交的任务数超过了corePoolSize,就进入了第二步操作。会将当前的runab 阅读全文
摘要:
===============================神奇分割线==================================keepAliveTimejdk中的解释是:当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。有点拗口,其实这个不难理解,在使用了“池”的应用中,大多都有类似的参数需要配置。比如数据库连接池,DBCP中的maxIdle,minIdle参数。什么意思?接着上面的解释,后来向老板派来的工人始终是“借来的”,俗话说“有借就有还”,但这里的问题就是什么时候还了,如果借来的工人刚完成一个任务就还回去,后来发现任务还有,那岂不是又要去借?这一来一往,老 阅读全文
摘要:
前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue);中篇中主要聊聊与keepAliveTime这个参数相关的话题;下片中介绍一下一些比较少用的该类的API,及他的近亲:ScheduledThreadPoolExecutor。如果理解错误,请直接指出。查看JDK帮助文档, 阅读全文
摘要:
private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L,TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(100000),new ThreadPoolExecutor.CallerRunsPolicy());一、简介线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,lo 阅读全文