Java之线程池管理
JDK5后建议使用ExecutorService与Excutors来创建与管理线程池, 不再建议直接使用Thread. 开始不明白原因, 今天知道结果了:
使用Thread.currnetThread.join()后,线程卡着无法退出, 事实二个子线程已经完成了. 使用这个方法是等待子线程完成后再自行退出. 结果卡壳了.
final FileCache cache = new FileCache(LoganalyseConfig.getInstance()).open();
try {
new Thread() {
public void run() {
try {
testPut(cache);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
new Thread() {
public void run() {
try {
testGet(cache);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
Thread.currentThread().join();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (cache != null) {
cache.close();
}
}
==========================================================
executor.submit(new Runnable() {
public void run() {
try {
testPut(cache);
} catch (IOException e) {
e.printStackTrace();
}
}
});
executor.submit(new Runnable() {
public void run() {
try {
testGet(cache);
} catch (IOException e) {
e.printStackTrace();
}
}
});
executor.shutdown();
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
System.out.println("退出testPutGet()");
最新文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
- Exchange Server 2013 一步步安装图解
- Valid Perfect Square
- PDA手持终端实现零售行业商场和超市仓储管理和销售开单自动化和系统化
- 半平面交模板(O(n*n)&;&; O(n*log(n))
- AVR ISP
- PHP编程中10个最常见的错误
- Web用户控件
- UVA 11235 Frequent values(RMQ)
- java关于map用来筛选的用法
- JS在可编辑的div中的光标位置插入内容或表情
- MySQL用户授权与权限
- Nmap 7.70新增功能——扫描主机所有IP
- [LintCode] Max Points on a Line 共线点个数
- spark sql 中的结构化数据
- NC 5系自定义显示公式
- grunt入门讲解1:grunt的基本概念和使用
- Android之代码创建布局
- 最简单的一个java驱动jdbc链接mysql数据库
- select exists 的应用一例
热门文章
- [JS Compose] 1. Refactor imperative code to a single composed expression using Box
- SNMP 配置
- [CSS] Nest a grid within a grid
- [React] Normalize Events with Reacts Synthetic Event System
- 第三十一天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(四)
- 在TMemo上画一条线(超级简单,举一反三)
- [GeekBand] C++ 基础知识一 ——通过引用传递数组
- XMPP之ios即时通讯客户端开发-mac上搭建openfire服务器(二)
- 学习鸟哥的Linux私房菜笔记(5)——目录
- PAT 1051-1060 题解