package demo1;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @see demo1 ArrayBlockingQueue实例队列入口
* @author Herman.Xiong
* @date 2014年2月26日 15:59:29
* @version V1.0
* @since jdk 1.6
*/
public class ArrayBlockQueueTest {
/**
* ArrayBlockingQueue
* 在构造时需要指定容量,并可以选择是否需要公平性,
* 如果公平参数被设置true,等待时间最长的线程会优先得到处理
* (其实就是通过将ReentrantLock设置为true来 达到这种公平性的:即等待时间最长的线程会先操作)。
* 通常,公平性会使你在性能上付出代价,只有在的确非常需要的时候再使用它。
* 它是基于数组的阻塞循环队列,此队列按 FIFO(先进先出)原则对元素进行排序。
*/
public static void main(String[] args) {
ArrayBlockQueueTest test = new ArrayBlockQueueTest() ;
test.main();
}
void main() {
/**
* newCachedThreadPool
* -缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse(重用).如果没有,就建一个新的线程加入池中
* -缓存型池子通常用于执行一些生存期很短的异步型任务
* -因此在一些面向连接的daemon(守护进程)型SERVER中用得不多。
* -能reuse的线程,必须是timeout IDLE(空闲的)内的池中线程,
* -缺省timeout是60s,超过这个IDLE时长,线程实例将被终止及移出池。
* -注意,放入CachedThreadPool的线程不必担心其结束,超过TIMEOUT不活动,其会自动被终止。
*/
ExecutorService es = Executors.newCachedThreadPool() ;
ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(10) ;
ThreadGet t1 = new ThreadGet(abq);
Thread t2 = new Thread(new ThreadPut(abq));
es.execute(t1);
es.execute(t2);
}
void test0(){
/**
* -newFixedThreadPool与cacheThreadPool差不多,也是能reuse就用,但不能随时建新的线程
* -其独特之处:任意时间点,最多只能有固定数目的活动线程存在,此时如果有新的线程要建立,
* -只能放在另外的队列中等待,直到当前的线程中某个线程终止直接被移出池子
* -和cacheThreadPool不同,FixedThreadPool没有IDLE机制(可能也有,但既然文档没提,肯定非常长,
* -类似依赖上层的TCP或UDP IDLE机制之类的),所以FixedThreadPool多数针对一些很稳定很固定的正规并发线程,多用于服务器
* -从方法的源代码看,cache池和fixed 池调用的是同一个底层池,只不过参数不同:
* -fixed池线程数固定,并且是0秒IDLE(无IDLE)cache池线程数支持0-Integer.MAX_VALUE(显然完全没考虑主机的资源承受能力),60秒IDLE
*/
ExecutorService es = Executors.newFixedThreadPool(10);
ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(10) ;
ThreadGet t1 = new ThreadGet(abq);
Thread t2 = new Thread(new ThreadPut(abq));
es.execute(t1);
es.execute(t2);
}
void test1(){
/**
* newScheduledThreadPool
* -调度型线程池
* -这个池子里的线程可以按schedule依次delay执行,或周期执行
*/
ExecutorService es = Executors.newScheduledThreadPool(10);
ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(10) ;
ThreadGet t1 = new ThreadGet(abq);
Thread t2 = new Thread(new ThreadPut(abq));
es.execute(t1);
es.execute(t2);
}
void test2(){
/**
* newSingleThreadExecutor
* -单例线程,任意时间池中只能有一个线程
* -用的是和cache池和fixed池相同的底层池,但线程数目是1-1,0秒IDLE(无IDLE)
*/
ExecutorService es = Executors.newSingleThreadExecutor();
ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<String>(10) ;
ThreadGet t1 = new ThreadGet(abq);
Thread t2 = new Thread(new ThreadPut(abq));
es.execute(t1);
es.execute(t2);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
QueueDemo.zip (75个子文件)
QueueDemo
bin
demo2
Consumer.class 1KB
BlockingQueueTest.class 2KB
Producer.class 1KB
Basket.class 892B
demo0
WorkThread.class 934B
WorkQueue$PoolWorker.class 1KB
LinkedListTest.class 1KB
WorkQueue.class 1KB
com
herman
msg
Message.class 2KB
config
log4j.properties 1KB
protocol
ClientIpPortServerHandler.class 3KB
MessageClientHandler.class 2KB
ServerInit.class 2KB
ClientInit.class 3KB
test
Test.class 387B
MangeSessionsTest.class 2KB
util
SocketUtil.class 389B
ConfigUtil.class 379B
queue
LinkedListTest.class 3KB
demo3
ConcurrentLinkedQueueTest.class 2KB
Poll.class 1KB
demo1
ThreadGet.class 2KB
ThreadPut.class 1KB
ArrayBlockQueueTest.class 2KB
.settings
org.eclipse.jdt.core.prefs 629B
src
demo2
Producer.java 860B
Basket.java 713B
BlockingQueueTest.java 1KB
Consumer.java 880B
demo0
WorkThread.java 428B
LinkedListTest.java 957B
WorkQueue.java 2KB
com
herman
msg
Message.java 1KB
config
log4j.properties 1KB
protocol
ServerInit.java 2KB
MessageClientHandler.java 1KB
ClientIpPortServerHandler.java 2KB
ClientInit.java 2KB
test
MangeSessionsTest.java 879B
Test.java 224B
util
ConfigUtil.java 122B
SocketUtil.java 174B
queue
LinkedListTest.java 3KB
demo3
ConcurrentLinkedQueueTest.java 2KB
Poll.java 804B
demo1
ArrayBlockQueueTest.java 3KB
ThreadGet.java 614B
ThreadPut.java 607B
.project 385B
.classpath 2KB
lib
gson-2.2.4-javadoc.jar 244KB
mina-example-2.0.7.jar 139KB
javassist-3.11.0.GA.jar 600KB
log4j-1.2.16.jar 470KB
spring-2.5.6.SEC03.jar 2.81MB
mina-integration-jmx-2.0.7.jar 28KB
commons-logging-1.0.3.jar 31KB
mina-core-2.0.7.jar 630KB
mina-integration-xbean-2.0.7.jar 39KB
gson-2.2.4.jar 186KB
commons-lang-2.6.jar 278KB
xbean-spring-3.11.1.jar 128KB
ognl-3.0.5.jar 222KB
mina-integration-ognl-2.0.7.jar 15KB
slf4j-log4j12-1.7.5.jar 9KB
mina-filter-compression-2.0.7.jar 12KB
mina-statemachine-2.0.7.jar 59KB
jcl-over-slf4j-1.6.6.jar 17KB
javassist-3.7.ga.jar 531KB
log4j-1.2.17.jar 478KB
tomcat-apr-5.5.23.jar 25KB
mina-integration-beans-2.0.7.jar 39KB
mina-transport-apr-2.0.7.jar 31KB
slf4j-api-1.7.5.jar 25KB
jzlib-1.1.1.jar 68KB
共 75 条
- 1
业余草
- 粉丝: 1w+
- 资源: 979
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页