现在的位置: 首页 > 综合 > 正文

java中的synchronized

2019年10月08日 ⁄ 综合 ⁄ 共 828字 ⁄ 字号 评论关闭

java中的synchronized,平时写程序的时候很少用到。今天碰到了,就查了查资料做个总结:

 

 

JAVA的synchronized关键字能够作为函数的修饰符,也可作为函数内语句的修饰符,也就是平时说的同步方法和同步语句块。

 

需要明确以下几点:


A.无论synchronized关键字加在方法上还是对象上,他取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。


B.每个对象只有一个锁(lock)和之相关联。

C.实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。  

 

 

一、当作函数修饰符代码示例:

 

 

说明:synchrnized锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程中执行这个同步方法时,他们之间会形成互

 

斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却能够任意调用这个被加了synchronized关键字的方法。

 

 

二、当语句块修饰符示例:

 

 

 

 

说明:锁就是so这个对象,谁拿到这个锁谁就能够运行他所控制的那段代码。当有一个明确的对象作为锁时,就能够这样写程式,但当没有

 

明确的对象作为锁,只是想让一段代码同步时,能够创建一个特别的instance变量(他得是个对象)来充当锁。

 

 

抱歉!评论已关闭.