Lock和Static使用说明和区别
private static object lockInsertObj = new object();
lock (lockInsertObj){--写代码}
1、静态方法与非静态方法
a、静态方法的调用
类.静态方法名([参数列表])
非静态方法的调用
类 对象 = new 类的构造函数([参数列表])
对象.非静态方法名([参数列表])
静态方法是属于类的,而非静态方法是属于对象的;
b、内存的初始化
静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候。
静态构造函数只能被执行一次;非静态的构造函数可以根据需要进行多次使用。
c、内存中存储
静态的只有一块全局内存空间,非静态的可以有多块内存空间(副本)
d、释放
静态的一旦创建则在全局区一直存放,直到应用程序结束。非静态的则是由new关键字在堆中创建的。可以有多个副本。由GC进行释放。
所以根据以上解释
加上static,类只有一个,一个内存空间,lock起到作用
不加static,则new创建了多个实例,lock是执行的是多个类,多个不同的内存空间,不起作用了
Lock和Static使用说明和区别的更多相关文章
- [Android Pro] synchronized与static synchronized 的区别
reference to : http://www.cnblogs.com/shipengzhi/articles/2223100.html 1.synchronized与static synchr ...
- 多线程同步锁和死锁以及synchronized与static synchronized 的区别
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序.简而言之:一个程序运行后至少有一个进程,一个进程 ...
- 总结const、readonly、static三者的区别【收藏、转载】20190614
总结const.readonly.static三者的区别 const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编 ...
- synchronized与static synchronized 的区别
synchronized是对类的当前实例加锁,防止其他线程同时访问该类的该实例的synchronized块,这里的概念是“类的当前实例”,而static synchronized是对类的所有实例加锁, ...
- synchronized 修饰在 static方法和非static方法的区别
Java中synchronized用在静态方法和非静态方法上面的区别 在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法.也可以synchroniz ...
- Unity C# const与static readonly的区别与联系
using System; namespace Test { class MainClass { //懒人写法的单例 class Weapon { public static readonly Wea ...
- const和static readonly的区别
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等. 在多数情况下可以混用.二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...
- Springboot的static和templates区别
static和templates部分参考博客:https://blog.csdn.net/wangb_java/article/details/71775637 热部署参考博客:https://www ...
- 总结const、readonly、static三者的区别
const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态 ...
随机推荐
- freemaker学习
1,依赖 <!-- Spring Boot Freemarker 依赖 --><dependency> <groupId>org.springframework.b ...
- maven+eclipse+jboss+oracle 12c+memcached+AngularJS
Maven 参考梁总的: Eclipse Java EE IDE for Web Developers集成的Maven 3 指向自己安装的 Maven Maven下载.安装和配置(二) 在本地配置ma ...
- 安装lnmp1.5,搬迁Laravel项目到服务器笔记
近期有个Laravel开发项目,需要搬到CentOS服务器做测试. 先说下项目的配置: Laravel版本5.5 --确定了php7.0以上: CentOS 7.0或以上. lnmp 1.5版 以下是 ...
- Log4j配置发邮件功能
# 发送日志到指定邮件log4j.appender.mail=org.apache.log4j.net.SMTPAppenderlog4j.appender.mail.Threshold=DEBUGl ...
- JAVA 注解和反射
通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...
- 一种C语言实现面向对象特性的继承,多态
基类: //.h typedef int (*TELE_SEND_CB)(char *pdata, int len); //函数表结构 typedef struct tele_pro_base_vtb ...
- keepalived+mysql主从环境,keepalived返回值是RST,需求解决方法?
环境描述: mysql版本5.6.37 keepalived-1.2.19 系统centos 7:3.10.0-514.26.2.el7 web是:windows server 2 ...
- tp框架增删改
选择一张表: 首先要创建模型: 1 $n = M("account"); 数据库添加数据: 1.使用数组: 1 2 3 1.使用数组 $arr = array("uid& ...
- Zuul转发请求时HttpHostConnectException can't cast to ZuulException问题解决方法
看了一下github上的issue,这应该是一个bug.说是已经在zuul 2.0.1.RELEASE中处理了,但是我用的SpringBoot2.0.4.RELEASE中仍然有问题. 处理方案如下: ...
- 窗口置顶 - 仿TopWind
前置学习:低级鼠标hook,获得鼠标状态. 这个在原来获得鼠标状态的基础上,加上一个事件处理即可. TopWind就是一个可以置顶窗口的文件,避免复制粘贴的时候的来回切换(大窗口与小窗口),算是一个实 ...