易截截图软件、单文件、免安装、纯绿色、仅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.lang.String、java.lang.StringBuffer、java.lang.StringBuilder,这三者的共同之处都是final类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用。StringBuffer与Strin ......

java正则表达式中的数量词

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

JAVA线程之四:线程状态检查,后台线程及线程组

一,线程状态的检查
      一般情况下无法确定一个线程的运行状态,对于这些处于未知状态的线程,可以通过isAlive()方法用来确定一个线程是否仍处在活动状态。当然即使处于活动状态的线程也并不意味着这个线程一定正在运行,对于一个已开始运行但还没有完成任务的线程,这个方法返回值为true。
......

四个有害的Java编码习惯

程序中的编码风格让我们的编程工作变得轻松,特别是程序维护员,他们要经常阅读其他人编写的程序编码,这一点尤其突出。编码规范从根本上解决了程序维护员的难题;规范的编码阅读和理解起来更容易,也可以快速的不费力气的借鉴别人的编码。对将来维护你编码的人来说,你的编码越优化,他们就越喜欢你的编码,理解起来也就越 ......

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号