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

java线程同步问题

一般,有3种使用锁进行同步的方法
    a.方法同步,例如public synchronized void xxx()...
    b.静态方法同步,例如public static synchronized void xxx()...
    c.程序块同步,例如
        ...
        synchronized(object oLock)    //注意:object不一定是该类的实例
        {
            ...
        }
   
    在用法a中,当某线程执行方法xxx时,jvm会锁定该类的实例,直到方法xxx执行完毕。执行xxx的过程看看成是这样的:
    *请求得到类实例的实例锁,假如有其他线程在执行,则等待;
    *得到实例锁,执行xxx;
    *执行完毕,释放实例锁;
    注意,这个过程是jvm完成的,我们只需要把某个对象方法声明为synchronized即可,实例锁可以理解为实例本身。
   
在用法b中,当某线程执行静态方法xxx时,也是有jvm控制经过以上的3个步骤,所不同的是由于此时不存在类实例(静态方法嘛),所
以用法a中实例锁被实例的类的锁取代,其实对我们编程来讲,几乎没有任何区别,我们只需要把静态方法声明为synchronized即可。
    在用法c中,oLock可以被理解为一个传接棒,它可以是任何类的实例,当某个线程试图访问声明为synchronized的程序块的时候,jvm
判断oLock是否被锁定,假如没有被锁定,则锁定oLock并执行该程序块。执行完毕释放该锁。
    在对象级使用锁(实例锁)通常是一种比较粗糙的方法,设想一下,假如一个对象可能去访问N个共享资源,那么假如有一个线程独占
了该对象,而仅仅是为了使用其中的一项资源的话,也会造成想访问其它资源的线程也处于堵塞状态。用程序块同步可以很好解决这个问题,
以下是使用被称为Fine_Grain_Lock的例子,看,效果是不是很high:
Java代码
class FineGrainLock {   
       MyMemberClass x, y;   
    Object xlock&


相关文档:

JAVA中用于处理字符串的“三兄弟”

JAVA中用于处理字符串的“三兄弟”
JAVA中用于处理字符串常用的有三个类:java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder,这三者的共同之处都是final类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用。 ......

java正则表达式中的数量词

    java中的正则位于java.util.regex包中,这个包中只有一个MatchResult接口和Matcher、Pattern两个类。
   正则中的数量词有Greedy (贪婪)、Reluctant(懒惰)和Possessive(强占)三种
  
 Greedy 数量词
X?
X,一次或一次也没有
X*
X,零次或多次
X+
X,一次或多次
X{n ......

总结几种Java字符串反转的实现方法

用三种方法来实现字符串的反转
/**
* @(#)ReverseString.java
*
* ReverseString application
*
* @author
* @version 1.00 2010/4/20
*/
import java.util.*;
import java.io.*;

public class ReverseString {


public static void main(String[] args) throws IOException{
......

Java程序员必去的网站(转)

英文网站
http://www.javaalmanac.com - Java开发者年鉴一书的在线版本,想要快速查到某种Java技巧的用法及示例的代码这是一个不错的去处.
http://www.onjava.com - O'Reilly的Java网站. 每周都有新文章.
http://java.sun.com - 官方的Java开发者网站 - 每周都有新文章发表.
http://www.developer.com/java - 由Gamelan ......

JAVA冒泡排序算法的几种实现方法

本文出自 “唐大老师” 博客,请务必保留此出处http://tscjsj.blog.51cto.com/412451/84561
public class Bubble {
// 冒泡排序函数1
public static void bubbleSort1(Comparable []data){

int position,scan;
Comparable temp;
for(position = data.length-1;position>=0;position--){
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号