易截截图软件、单文件、免安装、纯绿色、仅160KB

java 自己实现 ReadWriteLock (一)


多线程读写同一个对象的数据是很普遍的,通常,要避免读写冲突,必须保证任何时候仅有一个线程在写入,有线程正在读取的时候,写入操作就必须等待。简单说,就是要避免“写-写”冲突和“读-写”冲突。但是同时读是允许的,因为“读-读”不冲突,而且很安全。
要实现以上的ReadWriteLock,简单的使用synchronized就不行,我们必须自己设计一个ReadWriteLock类,在读之前,必须先获得“读锁”,写之前,必须先获得“写锁”。举例说明:
DataHandler对象保存了一个可读写的char[]数组:
package com.crackj2ee.thread;
public class DataHandler {
    // store
data:
    private
char[] buffer = "AAAAAAAAAA".toCharArray();
    private
char[] doRead() {
       
char[] ret = new char[buffer.length];
       
for(int i=0; i<buffer.length; i++) {
           
ret[i] = buffer[i];
           
sleep(3);
       
}
       
return ret;
    }
    private void
doWrite(char[] data) {
       
if(data!=null) {
           
buffer = new char[data.length];
           
for(int i=0; i<buffer.length; i++) {
               
buffer[i] = data[i];
               
sleep(10);
           
}
       
}
    }
    private void
sleep(int ms) {
       
try {
   &nb


相关文档:

深入浅出设计模式(C#/Java版)

GRASP模式:General Responsibility Assignment Software Patterns:通用责任分配软件模式
里面重要的概念是责任,责任是类间的一种合约或是义务,可以细分为两部分,用公式表示如下:
责任 = 知道责任 + 行为责任(这里面似乎存在概念的循环定义)
注:用通俗的话来讲,责任就是一个类知道要做什么,并且能够做什么。
� ......

java项目 java web项目数据库乱码问题的解决办法

作为java菜鸟,在学习到数据库操作的时候往往会遇到一个很头痛的问题,数据库中文乱码。这似乎是每个java程序员在成长过程中都会遇到的问题,下面我就把我自己的几种方法和大家分享一下。(一般是在MyEclipse下开发)
java项目:
首先,确保项目的编码是gbk或utf-8(),在Windows->Preferences->General->Workplac ......

Java 基本介绍


Java
Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。
  Java平台由Java虚拟机(Java Virt ......

Java常用排序算法


package com.xiaobian;   
  
public class BubbleSort {   
    //冒泡排序   
    public static void bubbleSort(int[] data){   
      &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号