首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

synchronized(this)、synchronized(.class)、锁静态方法方法区别?

pulbic class syncMethod(){ public synchronized void syncA(){} public synchronized void...static synchronized void staticA(){} public static synchronized void staticB(){} } 假设上面的类有四个方法...3、这个因为是静态,而且是不同的实例,根据定律也是可以加锁成功,两个线程不能同时访问。 4、这里因为一个是实例方法锁,一个是类方法锁,锁的对象不同,所以可以被同时访问。...二、synchornized(this)和synchronized(.class) 对象锁只对当前对象进行加锁,锁this和synchronized普通方法一样,只对调用的实例进行加锁,而锁.class...佐助释放 千鸟 佐助释放 千鸟 佐助释放 千鸟 佐助释放 千鸟 从上面代码可以看到,当锁this的时候,当是同一个实例,这时候是上锁成功,两个线程不会同时访问,和前面的synchronized修饰普通方法一样

37820
您找到你想要的搜索结果了吗?
是的
没有找到

Java静态内部类(static class)

故程序开发人员需要注意,只有静态内部类才能够定义静态的成员变量与成员方法。 二是在成员的引用上,有比较大的限制。 一般的非静态内部类,可以随意的访问外部类中的成员变量与成员方法。...但是如果一个内部类被定义为静态的,那么在引用外部类的成员方法或者成员变量的时候,就会有诸多的限制。如不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法)。这是什么意思呢?...牢记两个差别: 一、如是否可以创建静态的成员方法与成员变量(静态内部类可以创建静态的成员,而非静态的内部类不可以) 二、对于访问外部类的成员的限制(静态内部类只可以访问外部类中的静态成员变量与成员方法,...而非静态的内部类即可以访问所有的外部类成员方法与成员变量)。...非静态内部类实例: package common.lang; public class Student { private String name; private int age; public String

1.1K10

JS中(实例与静态)属性与方法大展示

UTF-8"> Document /* 1.在JavaScript中属性和方法分类两类...1.1实例属性/实例方法 在企业开发中通过实例对象访问的属性, 我们就称之为实例属性 在企业开发中通过实例对象调用的方法, 我们就称之为实例方法...1.2静态属性/静态方法 在企业开发中通过构造函数访问的属性, 我们就称之为静态属性 在企业开发中通过构造函数调用的方法, 我们就称之为静态方法 */...obj.say(); obj.age=666;//给不存在的属性设置并赋值 console.log(obj.age); obj.eat=function()//给不存在的方法设置并赋值...{ console.log("eat"); } // 构造函数也是一个"对象", 所以我们也可以给构造函数动态添加属性和方法 Person.num=999; Person.run=function

1K20

Class文件方法

类中除了字段以外就是方法,在熟悉了字段表以后,我们来熟悉一下方法表,方法表示描述了方法的返回值、参数列表、执行过程的集合,方法表和字段表采用一致的结构来进行表示,如下图: ?...但是作为字节码层面的重载要求要低一些,因为Java虚拟机规范定义了方法的返回值以及受查异常表也属于特征签名的一部分,因此两个仅仅返回值不同的方法Class文件中也是可以共存的。...没错关于方法体也就是说方法如何执行的就存储在这个方法表的Code属性上,关于Java虚拟机中的属性类型我们在上一节已经列举过了,不清楚的可以看一下上一节的内容 实例分析 public class ClassTest...{ private int m; private int inc() { return m + 1; } } 下图红色部分是经过Class文件中方法表的区域...通过Ox0002我们知道有该Class文件有两个方法,下面我们来看一下第一个方法,从Java类中命名只有一个方法,为什么到了Class文件会有两个方法,这是因为Java类在编译的时候会自动生成构造方法

60610

JSClass类的详解

概述     在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。它可以被看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。     ...严格模式     类和模块的内部,默认就是严格模式,所以不需要使用 use strict 指定运行模式 类的声明 定义一个类的一种方法是使用一个类声明,即用带有class关键字的类名(这里是“Rectangle...方法之间不要用逗号分隔,否则会报错 类的内部所有定义的方法,都是不可枚举的(non-enumerable) 一个类中只能拥有一个 constructor 方法 静态方法     静态方法可以通过类名调用...    类的所有方法都定义在类的 prototype 属性上面,在类的实例上面调用方法,其实就是调用原型上的方法     原型方法可以通过实例对象调用,但不能通过类名调用,会报错 class Person...    实例方法也可以通过实例对象调用,但同样不能通过类名调用,会报错 class Person { constructor() { this.sum =

4.4K10

4.4 静态域与静态方法

4.4 静态域与静态方法 4.4.1 静态域   如果将域定义为static,每个类中只有一个这样的域,而每一个对象对于所有的实例域却都有自己的一份拷贝。...4.4.2 静态常量   静态常量的使用比较常见,如: public class Math { ......4.4.3 静态方法   静态方法是一种不能向对象实施操作的方法。例如,Math类的pow方法就是一个静态方法。   ...可以认为静态方法是没有this参数的方法(在非静态方法中,this参数表示这个方法的隐式参数)   因为静态方法不能操作对象,所以不能在静态方法中访问实例域,但是静态方法可以访问自身的静态域。...package class_; public class StaticTest_4_3 { public static void main(String args[]) {

99270

PHP 静态属性和静态方法

,由于静态属性和方法可以直接通过类引用,所以又被称作类属性和类方法(相应的,非静态属性和非静态方法需要实例化后通过对象引用,因此被称作对象属性和对象方法),静态属性和方法可以通过 类名::属性/方法 的方式调用...在非静态方法中调用静态属性/方法 另外,我们前面提到不能在静态方法中通过 $this 调用非静态属性/方法,但是在非静态方法中可以通过 self:: 调用静态属性/方法class Car {...2、进阶功能 静态方法的继承和重写 和非静态属性/方法一样,静态属性和方法也可以被子类继承,静态方法还可以被子类重写: class Car { ......,此时和 self 功能一样,如果是在子类或者其他类中调用,则指向调用该方法所在的类,我们通过后期静态绑定改写上述代码: class Car { ......此外,还可以通过 static::class 来指向当前调用类的类名,例如我们可以通过它来替代 __CLASS__,这样上述子类就没有必要重写 getClassName 方法了: class Car {

4.2K10

禁止IIS缓存静态文件的方法(png,js,html等)

禁止IIS缓存静态文件(png,js,html等)背景: IIS为了提高性能,默认情况下会对静态文件js,html,gif,png等做内部缓存,这个缓存是在服务器iis进程的内存中的。...IIS这么做在很大程度上可以提高静态文件的访问性能,在正常情况下只要静态文件更新了IIS也会更新缓存。但是如果更新的静态文件很多就有可能出现缓存不更新的情况。...如何禁止IIS缓存静态文件(png,js,html等): 通过设置Http头不让浏览器缓存的方法在这个场景下是行不通的,因为缓存不是出现的客户端,而是出现在IIS服务器上;所以解决问题还需要从IIS本身入手...,通过配置Metabase.xml文件禁止IIS缓存相应目录下的静态文件。...注意事项: 通常情况下我们并不需要禁用IIS的静态文件缓存,iis会自动根据静态文件的修改时间自动更新缓存;只有在你遇到非常情况下才有必要禁用IIS缓存。

2.8K20
领券