
设计
文章平均质量分 76
jack_wu_xu
这个作者很懒,什么都没留下…
展开
-
异步执行线程并可以得到返回值
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * * @author Kaiwii Ho * Callable类就是一个有返回值的任务 * 对于任务与Thre...原创 2011-10-24 16:33:56 · 848 阅读 · 0 评论 -
线程池
在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 线程池工作原理:http://www.ibm.com/developer...原创 2011-10-24 16:55:09 · 101 阅读 · 0 评论 -
BlockingQueue使用
[code="java"]import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; /**...原创 2011-10-29 10:40:30 · 425 阅读 · 0 评论 -
ReentrantLock 到底锁定了哪个对象了?
一个简单的ReentrantLock的例子, 情景是几个朋友吃饭, 可是美味的汤只有一锅, 勺子只有一个. 这样一来, 难免就会有你抢我争的情况了. 但是, 如果有更美味的其他食物, 当然可以先转头去找其他的了. synchronized是无法做到这点的.Lunch类, 包括勺子(ReentrantLock)和"舀"的动作, 当这帮朋友想要"舀"的时候, 就只能一个人动手, 其他人乖乖等着...原创 2011-10-31 09:04:06 · 2317 阅读 · 0 评论 -
超时任务
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * * @author Kaiwii Ho * Callable类就是一个有返回值的任务 * 对于任务与Thre...原创 2011-10-31 09:04:55 · 194 阅读 · 0 评论 -
堆和栈
Java栈与堆堆:顺序随意栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配...原创 2011-11-01 16:02:43 · 112 阅读 · 0 评论 -
反射器模式
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。Java NIO非堵塞技术实际是采取Rea...原创 2011-11-09 10:16:23 · 202 阅读 · 0 评论