Spring中的ThreadPoolTaskExecutor是借助于JDK并发包中的java.util.concurrent.ThreadPoolExecutor来实现的。基于ThreadPoolExecutor可以很容易将一个Runnable接口的任务放入线程池中。ThreadPoolExecut...
分类:
编程语言 时间:
2015-03-02 20:37:37
阅读次数:
211
1单例模式 定义:确保一个类只有一个实例,并提供一个全局访问点; 使用场景:有一些对象我们只需要一个,例如:线程池,缓存,对话框,注册表的对象,日志对象等,假如出现多个反而会出现问题; 与全局变量相比:首先你要明白第一点,单例模式既然能出现这么多年就说明它肯定有它的优势才对;另一方面:使用单例模式相...
分类:
其他好文 时间:
2015-02-28 20:17:07
阅读次数:
148
内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。
(1)针对特殊情况,例如需要频繁分配释放固定大小的内存对象...
分类:
其他好文 时间:
2015-02-27 21:36:28
阅读次数:
244
JDK1.5之后,提供了自带的线程池,以便我们更好的处理线程并发问题。Executor类给我提供了多个线程池创建的方式: 创建固定的线程池Executors.newFixedThreadPool(2) 创建可变的缓冲线程池Executors.newCachedThreadPool() 创建单一的线程...
分类:
编程语言 时间:
2015-02-26 11:35:37
阅读次数:
162
Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。
主线程和cache线程都只有一个,而NetworkDispatcher线程可以有多个,这样能解决比并行问题。如下图:
其中左下角是NetworkDispatcher线程,大致步骤是:
1.不断从请求队列中取出请求
request = mQueue.take();2.发起网络...
分类:
其他好文 时间:
2015-02-26 01:26:56
阅读次数:
258
http线程池的主要用途是异步处理使用无状态短连接的http请求,在传输层通信基于tcp协议和应用层基于http协议的基础上,达到c++服务器与web服务器通信的目的。
设计上:
(1)服务器启动时,初始化配置数量的线程(形成被动连接线程池)。每个线程会生成epoll描述符。
(2)主线程生成监听socket,绑定端口。生成epoll描述符,注册监听socket,非阻塞接收(限定最大时间,如...
分类:
编程语言 时间:
2015-02-25 18:40:10
阅读次数:
277
简单的Java线程池可以从Executors.newFixedThreadPool( int n)获得。此方法返回一个线程容量为n的线程池。然后ExecutorService的execute执行之。
现给出一个示例。
package zhangphil.executorservice;
import java.util.concurrent.ExecutorService;
import j...
分类:
编程语言 时间:
2015-02-21 17:44:25
阅读次数:
155
这是我从网上收集的常见Java面试题及答案,但只收录了我不会做的题目。创建线程有几种不同的方式?你喜欢哪一种?为什么?有三种方式可以用来创建线程:继承Thread类实现Runnable接口应用程序可以使用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这不需要..
分类:
编程语言 时间:
2015-02-20 00:14:51
阅读次数:
393
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务(不止一个不同的任务)就是一个需要解决的关键问题,其实这就是一些"池化资源"...
分类:
编程语言 时间:
2015-02-19 18:39:48
阅读次数:
303
在部署 web 应用到生产环境,或者在对 web 应用进行性能测试的时候,经常会有人问:如何决定 web 应用线程池大小?决定一个 IO 阻塞型 web 应用的线程池大小是一项很艰巨的任务。通常是通过进行大量的性能测试来完成。在一个 web 应用中同时拥有多个线程池会让决定最优线程池大小的过程变得更加复杂。本文将就这个常见的问题进行一些讨论和建议。线程池web 应用中的线程池大小决定了在指定时间内...
分类:
编程语言 时间:
2015-02-15 16:41:01
阅读次数:
124