文档章节

同步方法和静态同步方法

秋风醉了
 秋风醉了
发布于 2014/11/18 14:30
字数 354
阅读 82
收藏 0
点赞 0
评论 0

同步方法和静态同步方法

You might wonder what happens when a static synchronized method is invoked, since a static method is associated with a class, not an object. In this case, the thread acquires the intrinsic lock for the Class object associated with the class. Thus access to class's static fields is controlled by a lock that's distinct from(不同于) the lock for any instance of the class.

Java中的每一个对象都可以作为锁

  • 对于同步方法,锁是当前实例对象。

  • 对于静态同步方法,锁是当前对象的Class对象。

  • 对于同步方法块,锁是synchonized括号里配置的对象。

当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。如下代码,

package com.usoft;

/**
 * If the method is an instance method,
 * it locks the monitor associated with the instance for which it was invoked
 * (that is, the object that will be known as this during execution of the body of the method).
 * If the method is static, it locks the monitor associated with the Class object
 * that represents the class in which the method is defined.
 * Created by liyanxin on 2015/1/5.
 */
public class HelloWorld {

    //静态方法加锁实际上是加在HelloWorld.class上
    synchronized public static void methodA1() {
    }

    //加锁的范围与methodA1一致
    public static void methodA2() {
        synchronized (HelloWorld.class) {
        }
    }

    //修饰在类方法上得锁,实际上是加在当前对象上也就是this
    synchronized public void methodB1() {
    }

    //加锁的范围与methodB1一致
    public void methodB2() {
        synchronized (this) {
        }
    }
}

==================END==================

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 228
博文 577
码字总数 407134
作品 0
朝阳
程序员
【Java并发性和多线程】Java同步块

本文为转载学习 原文链接:http://tutorials.jenkov.com/java-concurrency/synchronized.html 译文链接:http://ifeve.com/synchronized-blocks/ Java 同步块(synchronized block)用来标记......

heroShane
2014/01/28
0
0
12、Java并发性和多线程-Java同步块

以下内容转自http://ifeve.com/synchronized-blocks/: Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容: Java同步关键字(s...

easonjim
2017/06/15
0
0
Java--多线程同步Synchronized

Java多线程同步块(Synchronized) 一,问题描述 在工作的时候,很多业务上会对并发性有要求,那么并发的安全性及同步也是一个热点 问题,Java 同步块(synchronized block)用来标记方法或者...

fajor
2016/08/23
39
0
理解synchronized

1.synchronized这个是同步标识,打上这个标识可以理解为在这个地方上加了一把锁 2.synchronized可以分为:对象锁,区域锁,和方法锁 3.当一个方法或区域被锁住时,那么其标识为synchronized的...

Canaan_
2016/04/29
13
0
java 同步块(Java Synchronized Blocks)

Java 同步块包括方法同步和代码块同步。java 同步可以避免资源竞争,避免死锁。 主题包括的主要内容: 关键字 Synchronized 实例方法 Synchronized static methods Synchronized blocks in i...

丁佳辉
2015/08/18
0
0
Java线程:线程的同步与

本文出自 “熔 岩” 博客,转载请与作者联系! 一、同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:两个线程ThreadA、ThreadB都操作同一个对象Foo...

beibugulf
2016/11/18
1
0
java线程状态转换/同步与锁

Java线程的转换: 线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。 1、 新状态:线程对象已经创建,还没有调用start()方法 2、 可运行状态:当线程有资格运行,但调度...

晨曦之光
2012/05/16
248
0
Synchronized 的用法

Synchronized 的用法 synchronized 是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步代码块,作用范围是{}里面的代码,作用的兑现是调用这个代码块的对象; ...

u014527323
2017/11/23
0
0
说说你对synchronized同步块的了解吧?

synchronized关键字用来实现在并发编程中线程间的同步,synchronized相对于volatile关键字实现的是基于对象锁的同步,在java中每个对象都可以同步的锁。synchronized支持有实例方法、静态方法...

nj-zhangmq
2016/12/06
15
0
Android第二十天

一:同步机制(synchronized) 同步:在一个时间段内只能有一个线程运行某段代码块,在该线程运行的过程中, 其他线程不能进入,只有该线程运行完毕该代码块(或释放了同步锁),其他 线程才能...

黄晓磊
2016/06/24
11
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之thymeleaf(24)

1、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 2、application.properties spring......

木九天
刚刚
0
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
2分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
6分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
8分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
11分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
18分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
22分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
25分钟前
0
0
dubbo 资料

dubbo资料网站: https://www.cnblogs.com/a8457013/p/7818925.html

zaolonglei
25分钟前
0
0
大型网站,你是如何架构的?

大型网站,你是如何架构的?

微小宝
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部