Java多线程编程中不变模式的详解

3人阅读 评论(0) 收藏 举报
分类:
java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述不变模式,关于其他多线程设计模式的地址如下:
关于Future模式的详解: Java多线程编程中Future模式的详解
关于Master-Worker模式的详解: Java多线程编程中Master-Worker模式的详解
关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式的详解
关于生产者-消费者模式的详解:生产者-消费者模式Java详解

1. 不变模式的核心思想

在并行开发过程中,为确保数据的一致性和正确性,又必要对对象进行同步,但是同步操作对系统性能有相当的损耗。因此可以使用一种不可改变的对象,依靠其不变形来确保并行操作在没有同步的情况下依旧保持一致性和正确性。

不变模式的使用场景主要包括两个条件:

a. 当对象创建后,其内部状态和数据不再发生任何改变;

b.对象需求被共享、被多线程频繁访问。


2. 不变模式的Java实现

在Java语言中,不变模式的实现很简单,只需要注意一下4点:

a. 去除所有setter方法以及可以修改自身属性的方法;

b. 将所有属性设置为private的,并用final标记,确保其不可修改;

c. 确保没有子类可以继承该类;

d. 有一个可以创建完整对象的构造函数。

下面利用Java代码实现了满足上面4点的不变模式的类:

[java] view plain copy
  1. public final class Product { //final可以确保不会被继承  
  2.     private final String a;  //private确保不可被访问,final确保不可被修改  
  3.     private final String b;  
  4.     private final double c;  
  5.       
  6.     public Product(String a, String b, double c) {  
  7.         //创建对象时必须指定值,因为创建后将无法修改  
  8.         this.a = a;  
  9.         this.b = b;  
  10.         this.c = c;  
  11.     }  
  12.       
  13.     public String getA() {  
  14.         return a;  
  15.     }  
  16.   
  17.     public String getB() {  
  18.         return b;  
  19.     }  
  20.   
  21.     public double getC() {  
  22.         return c;  
  23.     }  
  24. }  

3. JDK中不变模式的实例

JDK中不变模式的使用也非常广泛。其中最为典型的是java.lang.String,此外还有所有元数据的包装类,如:

java.lang.Double

java.lang.Integer

java.lang.Boolean

等等。

查看评论

Guarded Suspension 模式

考虑这么一个伺服器,它可以处理来自多个客户端的服务请求(Request),为了不丢失客户的请求,它要维持一个缓冲区,客户的请求会先储存至缓冲区中,而伺服器会从缓冲区中取出请求并执行,如果缓冲区中没有请...
  • hgl868
  • hgl868
  • 2011-11-25 14:45:07
  • 1710

Java多线程编程详解

  • 2009年03月07日 15:09
  • 38KB
  • 下载

Java多线程编程详解.

  • 2010年07月19日 11:09
  • 38KB
  • 下载

Java多线程编程详解 .doc

  • 2010年10月11日 23:08
  • 35KB
  • 下载

探讨java深入的不变模式

不变模式(Immutable Pattern)顾名思义,它的状态在它的生命周期内是永恒的(晕,永恒的日月星晨,对象如人, 太渺小,谈不上永恒!),不会改变的.对于其中的不变类(Immutable C...
  • jurken
  • jurken
  • 2016-11-30 15:56:42
  • 445

JAVA多线程编程详解-详细操作例子

  • 2013年01月11日 13:51
  • 55KB
  • 下载

《Java多线程编程 深入详解》读书笔记

《Java多线程编程 深入详解》读书笔记 第一章 多进程多线程概述 线程概述 进程(PROCESS):CPU的执行路径 多进程:系统中同时运行多个程序 线程(THREAD):运行在进程...
  • mingyundezuoan
  • mingyundezuoan
  • 2018-01-17 21:59:54
  • 570

设计模式:不变模式

一个对象的状态在对象被创建之后就不再发生变化,这就是不变模式。不变模式的结构和实现不变模式可增强对象的强壮性。...
  • qq_30051139
  • qq_30051139
  • 2017-03-27 18:36:25
  • 184

Java多线程编程深入详解

  • 2013年03月28日 14:53
  • 1.4MB
  • 下载

并发程序开发及优化之不变模式

在并行软件开发过程中,同步操作似乎是必不可少的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步操作对系统性能有相当的损耗。为了尽可能的去除这些同步操...
  • ycy258325
  • ycy258325
  • 2016-04-19 16:32:55
  • 337
    个人资料
    持之以恒
    等级:
    访问量: 2487
    积分: 227
    排名: 34万+
    文章分类
    文章存档