谁能帮我解释一下这一小段java代码

求大神,感谢

private transient volatile boolean compiled = false;
public Matcher matcher(CharSequence input) {
if (!compiled) {
synchronized(this) { //特别是这儿开始的
if (!compiled)
compile();
}
}
Matcher m = new Matcher(this, input);
return m;
}

synchronized在JAVA里是加锁,这里的作用是保证多线程安全,比如一个线程在使用它的时候就会给compile()所占用的资源加上锁,第二线程在访问它的时候就不能访问。当compile()执行完成后,会将锁打开追问

嗯嗯,感谢!!
能在解释一下这个么

Matcher m = new Matcher(this, input);

追答

Matcher是一个正则匹配的实例,this应该就是你的正则表达式,input是要你匹配的字符串

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-26
synchronized(this) {...} 以当前实例为同步锁的同步代码段。

任何调用此实例的 matcher() 方法的线程在执行到些代码段时,都要同步(同时只能有一个线程在执行同步代码段。
例:
假如此方法为类 CLASSA 的成员方法,
CLASSA a=new CLASSA();
那么如果同时有多个线程调用 a.matcher(...) 方法,则只能有一个线程进入方法中的同步代码段,其它的会等待。
第2个回答  2014-12-26
有多个线程调用这个方法的时候只能一个一个进来 没学过线程肯定不懂的啦追问

能简单的帮我说一下是怎么运作的吗
感谢~

追答

怎么运作没用多线程编写效果是一样的。我比方说有一个成员变量 a线程把他修改成10 b线程把他修改成20 会串掉明白否 有可能程序不是你想要的结果 你预想 A先执行 最后结果是20结果b先执行了结果是10

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网