Synchronized和Static Synchronized区别
通过分析这两个用法的分析,我们可以理解Java中锁的概念。
一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),
一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。
实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized
(或者是锁在该类的class或者classloader对象上)。下面的文章做了很好的总结:
1.synchronized与static synchronized 的区别
synchronized是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。
那么static synchronized恰好就是要控制类的所有实例的并发访问,
static synchronized是限制多线程中该类的所有实例同时访问jvm中该类所对应的代码块。
实际上,在类中如果某方法或某代码块中有 synchronized,那么在生成一个该类实例后,该实例也就有一个监视块,
防止线程并发访问该实例的synchronized保护块,而static synchronized则是所有该类的所有实例公用得一个监视块,
这就是他们两个的区别。也就是说synchronized相当于 this.synchronized,
而static synchronized相当于Something.synchronized.(后面又讲解)
Synchronized和Static Synchronized区别的更多相关文章
- [Android Pro] synchronized与static synchronized 的区别
reference to : http://www.cnblogs.com/shipengzhi/articles/2223100.html 1.synchronized与static synchr ...
- 多线程同步锁和死锁以及synchronized与static synchronized 的区别
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序.简而言之:一个程序运行后至少有一个进程,一个进程 ...
- synchronized和static synchronized的比较
群里讨论的一个问题,网上别人已经贴出了很详细的说明,这里补充记录下,后面加入个人测试代码. 起因:1月份的时候看群里讨论一道问题,问题内容如下: 一个日本作者-结成浩的<java多线程设计模式& ...
- Java面试之synchronized 和 static synchronized
面试题: 答案: 不能 不能 不能 不能 能 正文 概述 通过分析这两个用法的分析,我们可以理解java中锁的概念.一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念), ...
- synchronized与static synchronized 差异
1.synchronized与static synchronized 差异 synchronized是对类的当前实例进行加锁,防止其它线程同一时候訪问该类的该实例的全部synchroniz ...
- 浅析Java中synchronized与static synchronized
synchronized关键字 synchronized是进行同步处理而保证线程安全.在一个方法中,如果是方法内的私有变量,那个这个变量是线程安全的,但是类中的实例变量是可能会出现线程安全问题的,当多 ...
- synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解
本Blog分为例如以下部分: 第一部分:synchronized与static synchronized 的差别 第二部分:JVM底层又是怎样实现synchronized的 第三部分:Java多线程锁 ...
- synchronized与static synchronized 的区别
synchronized是对类的当前实例加锁,防止其他线程同时访问该类的该实例的synchronized块,这里的概念是“类的当前实例”,而static synchronized是对类的所有实例加锁, ...
- (转)Synchronized(对象锁)和Static Synchronized(类锁)的区别
场景:面试的时候经常用得到! 1 综述 Synchronized和Static Synchronized区别 一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全 ...
随机推荐
- Excel with COM
COM excelApplication ; COM workBooks ; COM workSheets ; COM workSheet ; COM work ...
- win7双系统安装ubuntu并配置常用软件
首先在win7下磁盘清理出来空间具体方法找度娘就行了. 下面开始准备安装: 1.下载easyBCD 2.打开:添加新条目--NeoGub--安装 3.点击配置 修改menu.lst title In ...
- autoit使用WMIC获取硬件信息
效果图: 直接上源码了 #cs ---------------------------------------------------------------------------- AutoIt ...
- DAO跨事物调用---转账
第一步创建实体类:Entity package com.beiwo.epet.entity; public class Account { private int id; private String ...
- 使用Asp.net WebAPI 快速构建后台数据接口
现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...
- 软件调试——CPU异常列表
CPU异常主要分为三类:错误类异常,陷阱类异常和终止类异常 1 错误类异常 Fault CPU遇到该类异常后,会先将CS和EIP(当前发生错误的指令,而不是下一条指令)压栈,然后跳到异常处理函数中,执 ...
- PAT 02-线性结构1 两个有序链表序列的合并 (15分)
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef ...
- 关于char的定义语句,正确的有()
A.char c = "a"; 不对,char只能是单引号 B.char c = '\''; 对,\'是转义字符,为'单引号 C.chae c='cafe' ...
- <读书笔记>软件调试之道 :问题的核心-如何修复缺陷
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! 修复缺陷 对于一个好的修复来说,不仅仅是让软件运行正确,还需要为将来奠定基础.一 ...
- js闭包,匿名函数概念
var functionName = function(arg){ //函数体 }; 匿名函数:创建一个函数,并将它赋值给一个变量,这种情况下创建的函数叫做匿名函数,因为function关键字后面没有 ...