线程池是经常用的,所以今天特地将其原理、好处、jdk的实现方式整理出来,以供以后复习之用。
问题:服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。
如果每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求...
分类:
编程语言 时间:
2015-06-07 09:35:07
阅读次数:
163
一、线程池引入 Java的线程池是Java5.0以后的新功能,它让开发者更易开发高效的多线程程序,也让多线程程序的性能大大提高。Java提供的关于线程池的API是基于原有线程API的,只是用另外一种方式来使用Java的多线程变成功能。
简单来说,线程池就是一个或者多个线程的集合。一般而言,线程池有一下几个部分。
完成任务的一个或者多个线程
用于调度管理的管理线程
要求执行的任务队列
那么为什...
分类:
编程语言 时间:
2015-06-05 10:18:37
阅读次数:
230
1. 如何让一段程序并发的执行,并最终汇总结果?答:使用CyclicBarrier 和CountDownLatch都可以,使用CyclicBarrier 在多个关口处将多个线程执行结果汇总,CountDownLatch 在各线程执行完毕后向总线程汇报结果。2. 如何合理的配置java线程池?如CPU...
分类:
编程语言 时间:
2015-06-01 20:04:59
阅读次数:
320
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程...
分类:
编程语言 时间:
2015-06-01 12:54:02
阅读次数:
232
一 为什么需要并发?
或许我们想到的第一个理由是:使程序更快的执行,确实,对于多处理器的机器来说,利用并发将每个任务分配到多个CPU上,能使程序更快的执行。
但在单处理器机器上运行并发程序,由于上下文切换(CPU控制权由运行任务转移到另外一个就绪任务时所发生的事件)的代价,开销甚至比顺序执行还要大,那是不是说,并发对于单处理器来说就没有作用了呢?
其实不然,因为考虑到一种情况“阻塞”,如果没有...
分类:
其他好文 时间:
2015-05-27 12:26:40
阅读次数:
192
基本认识以下摘自百度百科
线程池的概念:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。
线程池的作用:在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一...
分类:
编程语言 时间:
2015-05-25 10:18:39
阅读次数:
219
JAVA线程池中队列与池大小的关系JAVA线程中对于线程池(ThreadPoolExecutor)中队列,池大小,核心线程的关系写出自己的理解:1:核心线程:简单来讲就是线程池中能否允许同时并发运行的线程的数量2:线程池大小:线程池中最多能够容纳的线程的数量。3:队列:对提交过来的任务..
分类:
编程语言 时间:
2015-05-23 18:38:36
阅读次数:
7332
目的 了解线程池的知识后,写个线程池实例,熟悉多线程开发,建议看jdk线程池源码,跟大师比,才知道差距啊O(∩_∩)O 线程池类 1 package thread.pool2; 2 3 import java.util.LinkedList; 4 5 public class Th...
分类:
编程语言 时间:
2015-05-23 16:48:07
阅读次数:
273
package com.jrhcode.morethreadtest;
import java.util.concurrent.Executors;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import andro...
分类:
移动开发 时间:
2015-05-21 17:25:03
阅读次数:
147
package com.letv.lazybox.task;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor...
分类:
编程语言 时间:
2015-05-20 16:24:52
阅读次数:
243