Java同步机制总结--synchronized关键字的使用

网友投稿 522 2022-05-30

不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话。

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

假如再细的分类,synchronized可作用于

instance变量、

object reference(对象引用)、

static函数、

class literals(类名称字面常量)身上。

在进一步阐述之前,我们需要明确几点:

接着来讨论synchronized用到不同地方对代码产生的影响:

1. 把synchronized当作函数修饰符时,示例代码如下:

Public synchronized void method(){

//….

}

Java同步机制总结--synchronized关键字的使用

public void method()

{

synchronized (this) // (1)

{

//…..

}

}

2.同步块,示例代码如下:

public void method(SomeObject so) {

synchronized(so)

{

//…..

}

}

class Foo implements Runnable

{

private byte[] lock = new byte[0]; // 特别的instance变量

Public void method()

{

synchronized(lock) { //… }

}

//…..

}

3.将synchronized作用于static 函数,示例代码如下:

Class Foo

{

public synchronized static void method1() // 同步的static 函数

{

//….

}

public void method2()

{

synchronized(Foo.class) // class literal(类名称字面常量)

}

}

小结如下:

更有一些技巧能够让我们对共享资源的同步访问更加安全:

Java 任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC中常用注解与使用方法SpringMVC简介
下一篇:Java享元模式
相关文章