
并发编程
文章平均质量分 85
iteye_7030
这个作者很懒,什么都没留下…
展开
-
通过 Terracotta实现基于Tomcat的Web应用集群教程
http://forums.terracotta.org/forums/posts/list/2342.page官方论坛详细问题本教程介绍如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。基本原理简介 一般利用Tomcat搭建Web应用集群有如下几种方法...原创 2011-09-28 17:08:45 · 180 阅读 · 0 评论 -
ScheduledThreadPool
使用延迟线程池可以指定任务在特定的时延之后执行。下面是一个例子:package wyf.jc;import java.util.concurrent.*;class MyScheduledTask implements Runnable{private String tname;public MyScheduledTask(String tname){this.tname=tname;}publi...原创 2011-04-07 14:16:01 · 142 阅读 · 0 评论 -
多线程摘录 009
Atomic Variable & nonblocking synchronization* int i=0; 想不到 ++i 竟然不是原子操作, 而是包含了3步* 使用锁定缺点: - 很明显的, 性能和吞吐量问题, 包括context switch, 内存同步等 - cpu利用率低, 因为其他线程都阻塞了, cpu处理几乎空闲的状态 - 高优先级的线程也被阻塞了* CA...原创 2011-04-07 14:11:24 · 102 阅读 · 0 评论 -
多线程摘录 008
* !!! synchronized使得在等待锁定的线程无法被中断, 也无法因为超时而返回. 这是JDK5重新引入ReentrantLock的主要原因* ReentrantLock的典型使用风格Lock lock = new ReentrantLock();...lock.lock();try { // update object state // catch exceptions a...原创 2011-04-07 14:10:26 · 133 阅读 · 0 评论 -
多线程摘录 007
* 测试多线程程序的安全性和生存型 - 不要做出"伪"测试代码, 即让有问题的代码也能通过的测试* 测试要关注的几点 - 吞吐量 - 响应时间 - 伸缩性(是否资源越多, 吞吐量越大?)* 如何测试有阻塞的方法 The obvious way to do this is via interruptionstart a blocking activity ...原创 2011-04-07 14:09:16 · 114 阅读 · 0 评论 -
多线程摘录 006
生存性的问题* 死锁最常见的情况, 就是一组线程处理任务的时候, 需要共享使用多个资源. 例如线程A和B需要访问资源X和Y, 实际情况是, A先锁住了X, B锁住了Y, 在B没有释放Y的时候A同时尝试去锁住Y, 而B也同时在尝试锁住X, 这样A和B就相互等待对方释放资源, 造成死锁.如果是一个数据库系统, 就会设计一些机制来避免这种问题. 当数据库发现这种死锁的时候, 会选择放弃其中一个事务.死锁...原创 2011-04-07 14:08:14 · 108 阅读 · 0 评论 -
多线程摘录 005
使用线程池* 什么样的任务需要特殊的执行策略呢?1) 有依赖关系的任务. 想想如果提交给线程池的任务之间是有依赖关系的, 怎么办?2) 在原本单线程访问外部资源的情况下, 如果突然改成了线程池呢?3) 考虑即时响应性的程序. 如果在用户界面提交了一个长时间运行的任务而线程池是单线程的 , 或者提交N个长时间运行的任务, 而线程池只有N-1的线程数, 会怎样?4) 不要在线程池的线程...原创 2011-04-07 14:06:54 · 106 阅读 · 0 评论 -
多线程摘录 004
* 使用哪种模式的并发?观察一下简单的服务器方式一: while(true) { Socket s = serverSocket.accept(); handleRequest(s); }方式二: while(true) { final Socket s = serverSocket.accept(); new T...原创 2011-04-07 14:06:02 · 132 阅读 · 0 评论 -
用ReentrantLock模拟宴会的热闹情景
一个简单的ReentrantLock的例子, 情景是几个朋友吃饭, 可是美味的汤只有一锅, 勺子只有一个. 这样一来, 难免就会有你抢我争的情况了. 但是, 如果有更美味的其他食物, 当然可以先转头去找其他的了. synchronized是无法做到这点的.Lunch类, 包括勺子(ReentrantLock)和"舀"的动作, 当这帮朋友想要"舀"的时候, 就只能一个人动手, 其他人乖乖等着, 或者...原创 2011-04-07 14:04:33 · 156 阅读 · 0 评论 -
多线程摘录 003
同步器A synchronizer is any object that coordinates the control flow of threads based on its state. Blocking queues can act as synchronizers; other types of synchronizers include semaphores, barriers, a...原创 2011-04-07 14:03:25 · 124 阅读 · 0 评论 -
多线程摘录 002
设计线程安全的类需要考虑哪些因素?1) 找出哪些变量属于对象的状态2) 找出哪些不变量属于对象的状态3) 使用合适的并发策略来管理对状态的访问考虑线程安全的需求1) 同步范围多大? 整个方法? 一个大块? 小块?2) 有哪些限制和先决条件?java内建的监视器模型, 通过锁定, 即在锁对象添加监视器, 一旦锁定释放, 监视器通知其他等待的线程. Object.wait/notity/notify...原创 2011-04-07 14:02:15 · 110 阅读 · 0 评论 -
多线程摘录 001
需要考虑什么?* 正确性. 程序必须能得到正确的结果* 生存性. 程序必须能稳定有效运行* 安全性. 例如不造成资源共享问题等...* 性能.Timer: 它自己管理了线程来处理TimerTask.使线程安全运行的一些方法:* 不共享内部状态, 如使用无状态的设计* 使用不变模式* 使用同步线程对资源使用的原子性:如果线程两次访问资源, 得到的不是相同的状态, 就有原子性的问题.通常线程对共享资源...原创 2011-04-07 14:00:02 · 127 阅读 · 0 评论 -
java 5.0 多线程编程实践
Java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的API多线程编程在Java 5中更加容易,灵活。本文通过一个网络服务器模型,来实践Java5的多线程编程,该模型中使用了Java5中的线程池,阻塞队列,可重入锁等,还实践了Callable, Future等接口,并使用了Java 5的另外一个新特性泛型。 简介 本文将实现一个网络服务器模型,...原创 2011-04-07 13:49:26 · 122 阅读 · 0 评论 -
Java ExecutorService线程
ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Runtime.getRun...原创 2011-04-07 13:48:24 · 96 阅读 · 0 评论 -
Future接口的应用
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.F...原创 2011-04-07 14:16:50 · 115 阅读 · 0 评论