- 浏览: 10931 次
最新评论
文章列表
Activity中有一个名称叫onCreate的方法。该方法是在Activity创建时被系统调用,是一个Activity生命周期的开始。可是有一点容易被忽视,就是onCreate方法的参数saveInsanceState。一般的程序开发中,很少用到这个参数。
onCreate方法的完整 ...
并发:CountDownLatch的使用
- 博客分类:
- Java语言
CountDownLatch:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。与CyclicBarrier非常类似。但CountDownLatch的计数器只能使用一次,而CyclicBarrier可以循环使用。
主要方法
public CountDownLatch(int count);
public void countDown();
public void await() throws InterruptedException
示例(来自《Think In Java》,稍有改动):注意latch.await()的位置
class TaskPor ...
并发:CyclicBarrier的使用
- 博客分类:
- Java语言
CyclicBarrier:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。
1、使用构造方法为:CyclicBarrier( ...
第三部分:betwixt解析xml报文
cxf开发webservice
通过缩小同步代码块的作用范围,我们很容易做到既确保程序的并发性,同时又能维护线程的安全性。尽量将不影响共享状态且执行时间较长的操作从同步代码块中分离出去。
@ThreadSafe
public class CachedFactorizer extends GenericServlet implements Servlet {
@GuardedBy("this") private BigInteger lastNumber;
@GuardedBy("this") private BigInteger[] lastFactors;
...
重进入(Reentrancy)
- 博客分类:
- Java并发编程
1、内置锁:同步代码块(synchronized block),是重入锁。
2、当线程请求一个由其它线程持有的对象锁时,该线程会阻塞,而当线程请求由自己持有的对象锁时,如果该锁是重入锁,请求就会成功,否则阻塞。
public class Widget{
public synchronized void doSomething(){
System.out.println("this is Widget doSomething!");
}
}
public class LoggingWidget extends Widget{
pub ...
1、《研磨设计模式》,代理模式,263
2、《Java 并发编程》,第一部分,基础知识,46
3、《Think In Java》,并发,758
4、《EffectiveJava》,4
阅读《研磨设计模式》笔记。之后若有所感,再补充。
中介者模式目的是:封装对象之间的交互。如果一个对象的状态改变会引起其他相关对象的变化,或一个对象的操作会引起其他对象的后续操作,可以使用中介者来完成这些关联关系。
场景问题:电脑主板与各个部件的关系
示例:
/**
* @description 中介者对象接口
* @author liuwei
* @date 2014-4-18
* @version 1.0
*/
public interface Mediator {
/**
* 同事对象在自身状态改变的时候来通知中介者对象,意思就是说告诉中介者我的状态改变了 ...
阅读《研磨设计模式》笔记。之后若有所感,再补充。
原型模式核心:克隆
场景:有一个保存订单的系统,订单数超过1000则把订单分出1000,变成了两张订单,类推。
且订单分为个人订单和企业订单。
/**
* @description 订单的接口,声明了可以克隆自身的方法
* @author liuwei
* @date 2014-4-17
* @version 1.0
*/
public interface OrderApi {
public int getOrderProductnNum();
public void setOrderProductnNum(i ...
阅读《研磨设计模式》笔记。之后若有所感,再补充。
生成器模式目的:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
示例:
/**
* @description 描述输出到文件头的对象
* @author liuwei
* ...