性能优化中,其中一块是线程池的使用,初探线程池,从简单了解到源码分析,深入理解才能合理运用。
(一)线程池的来源及优点
单个异步任务,每次都需创建线程、销毁线程,当任务处理的时间短而请求数却巨大时,将导致资源消耗过多。
比如,数据库连接,需消耗大量资源,建立线程池能重用数据库访问线程。
使用线程池的优点:
1.降低资源消耗。重用现有线程,减少线程创建销毁开销。
2.提高...
分类:
编程语言 时间:
2014-05-24 23:19:10
阅读次数:
511
接上文
遗留问题
对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问和随时监控线程的状态和执行顺序和线程返回值等就不行了。
Callable 和 Future 简介
Callable接口代表一段可以调用并返回结果的代码;Future接口表示是执行异步任务...
分类:
移动开发 时间:
2014-05-21 13:40:13
阅读次数:
371
尝试创建基于MVVM三层架构的异步任务:场景:View层触发ViewModel层的动作请求,ViewModel层异步的从Model层查询数据,当数据返回或者请求超时时正确更新ViewModel层数据并触发View层的UI更新。要求:View层保持UI响应,ViewModel层实现有超时控制的异步调用...
分类:
Web程序 时间:
2014-05-19 08:53:52
阅读次数:
404
前言:这里介绍一个python下,比celery更加简单的异步工具,真的是很简单,当然他的功能没有celery多,复杂程度也没有celery大,文档貌似也没有celery多,但是为啥会介绍rq这个东西因为他够简单。当然他虽然简单,但是也是需要中间人的,也就是Broker,这里只能是redis了。他没..
分类:
编程语言 时间:
2014-05-15 09:21:14
阅读次数:
568
刚开始学一门编程语言的时候,我总是会有一种困惑,怎样让自己的代码看起来更“专业”?很多时候,我们可以照着教材实现一些基本的功能,比如用Socket发送/接收几个字符,写一个线程完成某个异步任务,但是在实际的项目中,往往不那么简单,比如需要设计Socket通信协议,需要处..
分类:
移动开发 时间:
2014-05-14 16:27:00
阅读次数:
366
一、
基本简介block用来保存一段代码block的标志:^block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多block跟函数很像:
1.可以保存代码 2.有返回值 3.有形参 4.调...
分类:
其他好文 时间:
2014-05-12 13:01:45
阅读次数:
225
项目中使用的SingleMessageView,控件实例化后,点击用户头像,此时跳转到UserInfo里查看这个用户的头像、用户名、签名、标签。之前,师兄在SingleMessage里写了个头像的点击响应,点击用户头像,把用户的用户名通过intent传给UserInfo,同时执行想服务器获取这...
分类:
编程语言 时间:
2014-05-11 15:41:58
阅读次数:
836
Android为了降低这个开发难度,提供了AsyncTask。AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务,更通俗地说就是一个执行后台任务的线程而且他还会自动通知主线程更新UI优点:
结构清晰,容易理解。缺点 代码量稍大下面直接看代码 1 private class Asy.....
分类:
移动开发 时间:
2014-05-06 08:50:11
阅读次数:
373
GCD的任务1> disptach_sync 没有创建线程的欲望,就在当前线程执行
最主要的目的,阻塞并行队列任务的执行,只有当前的同步任务执行完毕后,后续的任务才能够执行 应用场景:用户登录!2> dispatch_async
有创建线程的欲望,但是创建多少条线程,取决与队列的类型GCD的队列1>...
分类:
其他好文 时间:
2014-05-01 20:50:56
阅读次数:
434
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?1
newThread(newRunnable(){2 3 @Override4 publicvoidrun(){5 // TODO Auto-generated
method stu...
分类:
移动开发 时间:
2014-05-01 15:23:31
阅读次数:
453