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

Java同步机制 synchronized

不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话。JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。
在进一步阐述之前,我们需要明确几点:
A.无论synchronized关键字加在方法上还是对象上,他取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。
B.每个对象只有一个锁(lock)和之相关联。
C.实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。
接着来讨论synchronized用到不同地方对代码产生的影响:
假设P1、P2是同一个类的不同对象,这个类中定义了以下几种情况的同步块或同步方法,P1、P2就都能够调用他们。
1.  把synchronized当作函数修饰符时,示例代码如下:
Public synchronized void method(){
//….
}
这也就是同步方法,那这时synchronized锁定的是哪个对象呢?他锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程中执行这个同步方法时,他们之间会形成互斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却能够任意调用这个被加了synchronized关键字的方法。
上边的示例代码等同于如下代码:
public void method()
{
synchronized (this)      //  (1)
{
       //…..
}
}
(1)处的this指的是什么呢?他指的就是调用这个方法的对象,如P1。可见同步方法实质是将synchronized作用于object reference。――那个拿到了P1对象锁的线程,才能够调用P1的同步方法,而对P2而言,P1这个锁和他毫不相干,程式也可能在这种情形下摆脱同步机制的控制,造成数据混乱:(
2.同步块,示例代码如下:
public void method(SomeObject so) {
synchronized(so)
{
       //…..
}
}
这时,锁就是so这个对象,谁拿到这个锁谁就能够运行他所控制的那段代码。当有一个明确的对象作为锁时,就能够这样写程式,但当没有明确的对象作为锁,只是想让一段代码同步时,能够创建一个特别的instance变量(他


相关文档:

Java中的转义字符

\n 换行(\u000a)  
\t 水平制表符(\u0009)  
\b 空格(\u0008)  
\r 回车(\u000d)  
\f 换页(\u000c)  
\' 单引号(\u0027)  
\" 双引号(\u0022)  
\\ 反斜杠(\u005c)  
\ddd 三位八 ......

java事件处理机制(自定义事件)【转】

java中的事件机制的参与者有3种角色:
1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。
3.event listener ......

java中String和int之间的相互转化

java中
String和int之间的相互转化
(1)int i = Integer([String]); 或
     int i = Integer.parseInt([String],[int index]);
(2)int i = Integer.valueOf([String]).intValue();
int类型转化为String
(1)String s = String.valueOf([int]);
(2)String s = Integer.toString([int]);
......

JAVA规范大集合(备忘)


 
Java 标准与规范
 
本栏目提供了大量的 Java 技术标准与规范的简介、官方网址以及 developerWorks 网站上相关的技术资源。通过本栏目,您不但可以了解当前 Java 社区主要的技术标准和规范,还可以通过查看相关的技术文章和教程进行更深入的学习,从而更好地为实际的 Java 项目进行技术选型。
A B C D E F ......

java 3d开发

【转贴】Java 3D游戏开发主要技术
注:本贴转自转载自 长不大的人 的QQ空间,题目如题!
       本文链接为:http://user.qzone.qq.com/7965122/blog/1234685218
1,Java3D
作为sun公司较早推出的一项3d技术,是一种高度封装的api,构建在opengl和direct3d之上,可以说是最有名的java的3d技术。由 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号