lock(this)、lock(class) 、lock(object)

1. lock(this) 锁定是当前对象的实例

2.lock(class)

3.lock(object)

任意引用对象,只要是同一个引用地址都可以同步

4.lock(this) 与 lcok(class)使用

5.lock(值类型对象)   会发生自动装箱,object=new object(值类型对象),导致【锁不住】,无法实现同步,故无法使用值类型对象

6.使用lock (String.Intern(str.ToString()))来同步

原文地址:https://www.cnblogs.com/licaibin666/p/9038811.html

时间: 2024-11-05 22:58:33

lock(this)、lock(class) 、lock(object)的相关文章

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

synchronized与lock 对象锁、互斥锁、共享锁以及公平锁和非公平锁

synchronized与lock  都是用来实现线程同步的锁,synchronized对象锁,lock是一个接口,她的实现有reentrantlock互斥锁以及ReentrantReadWriteLock共享锁. 这里说明一下ReentrantReadWriteLock共享锁,所谓共享就是该锁提供读读锁共享,即可以多个线程共享一个读取锁,但是读写锁以及读读锁是互斥的. 看到网上有好多介绍介绍锁的种类的,有对象锁.互斥锁.共享锁以及公平锁和非公平锁,但是说明都不够详细了然,在这里用直白的说法记录

6、JUC--同步锁Lock

显示锁 Lock ? 在Java 5.0之前,协调共享对象的访问时可以使用的机 制只有 synchronized 和 volatile .Java 5.0 后增加了一些 新的机制,但并不是一种替代内置锁的方法,而是当内 置锁不适用时,作为一种可选择的高级功能. ? ReentrantLock 实现了 Lock 接口,并提供了与 synchronized 相同的互斥性和内存可见性.但相较于 synchronized 提供了更高的处理锁的灵活性 解决多线程安全的方法: 1.同部代码块(synchro

C++ Primer 学习笔记33_面向对象编程(4)--虚函数与多态(一):多态、派生类重定义、虚函数的访问、 . 和->的区别、虚析构函数、object slicing与虚函数

C++ Primer学习笔记33_面向对象编程(4)--虚函数与多态(一):多态.派生类重定义.虚函数的访问. . 和->的区别.虚析构函数.object slicing与虚函数 一.多态 多态可以简单地概括为"一个接口,多种方法",前面讲过的重载就是一种简单的多态,一个函数名(调用接口)对应着几个不同的函数原型(方法). 更通俗的说,多态行是指同一个操作作用于不同的对象就会产生不同的响应.或者说,多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为. 多态行分

pg启动异常could not open lock file "/tmp/.s.PGSQL.5432.lock":

今天安装postgres,启动异常:could not open lock file "/tmp/.s.PGSQL.5432.lock": 修改tmp权限,chown -R postgres:postgres /tmp 启动成功.

Java学习(API及Object类、String类、StringBuffer字符串缓冲区)

一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件.可以在其中查看相对应的类的源码. 我们在每次查看类中的方法时,都打开源代码进

javascript中 for in 、for 、forEach 、for of 、Object.keys().

一 .for ..in 循环 使用for..in循环时,返回的是所有能够通过对象访问的.可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例.这里需要注意的是使用for-in返回的属性因各个浏览器厂商遵循的标准不一致导致对象属性遍历的顺序有可能不是当初构建时的顺序.(实例+原型中的可枚举属性) 1.遍历数组 虽然for..in主要用于遍历对象的属性,但同样也可以用来遍历数组元素. 2:for..in和for遍历数组时下标类型不一样 var colors = ['red', 'gree

Synchronized 和 Lock的区别,以及使用Lock的好处

Synchronized 和 Lock 在java并发编程中广泛使用,简单的来说下这两者的区别,记录下 一,两者的构造 synchronized是关键字,它是属于JVM层面的 Lock是一个具体的类,它是属于API层面的锁  (java.util.concurrent.locks.Lock) synchronized底层是通过monitor对象来完成 二,使用方法 synchronized 不需要用户手动去释放锁,当synchronized代码执行完后系统会自动让线程释放对锁的占用 Reentr

sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

原因:历史软件(包)更新(安装)未完成就退出了系统 解决办法:杀死该进程 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 为防止类似情况发生,可以执行以下命令 sudo dpkg --configure -a sudo apt-get update 即使运行sudo dpkg --configure -a也不能解决问题,那就将错误的更新包删除并尝试重新更新 sudo rm /var/lib/dpkg/updates/

第4章:缓冲区、着色器、GLSL

原文链接: http://www.rastertek.com/gl40tut04.html Tutorial 4: Buffers, Shaders, and GLSL This tutorial will be the introduction to writing vertex and pixel shaders in OpenGL 4.0. It will also be the introduction to using vertex and index buffers in OpenG