以C#为例,锁住this或字符串都算不是好的选择。

先看锁this:

lock (this) {this.name = "info";this.update();// ...
}

这其实不好,因为锁的对象最好是代码控制的资源,因为它们是类的私有数据。
一旦资源是公有的,那么其他代码也能对资源上锁,从而造成死锁。

锁住一个对象

【软件质量】对this或字符串加锁的弊病相关推荐

  1. 记一次synchronized锁字符串引发的坑兼再谈Java字符串

    问题描述 业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间. 并发下,取IP是有一定策略的,取到IP之后拿IP对应的 ...

  2. 多线程下的进程同步(线程同步问题总结篇)

    之前写过两篇关于线程同步问题的文章(一,二),这篇中将对相关话题进行总结,本文中也对.NET 4.0中新增的一些同步机制进行了介绍. 首先需要说明的是为什么需要线程功能同步.MSDN中有这样一段话很好 ...

  3. Visual C++ 全能速查宝典

    第1章 数学函数 1.1 _chgsign--求参数的相反数 1.2 _copysign--复制数据 1.3 _hypot--求直角三角形斜边长度 1.4 _max--求两个数中的大数 1.5 _mi ...

  4. Visual C++全能速查宝典

    第1章 数学函数 1.1 _chgsign--求参数的相反数 1.2 _copysign--复制数据 1.3 _hypot--求直角三角形斜边长度 1.4 _max--求两个数中的大数 1.5 _mi ...

  5. 数据库(DataBase)

    MySQL 简介 数据库 数据库:DataBase,简称 DB,存储和管理数据的仓库 数据库的优势: 可以持久化存储数据 方便存储和管理数据 使用了统一的方式操作数据库 SQL 数据库.数据表.数据的 ...

  6. 并发下常见的加锁及锁的PHP具体实现-转载

    php并发编程-转自:http://www.cnblogs.com/jingzhishen/p/4328740.html 并发下常见的加锁及锁的PHP具体实现 http://www.cnblogs.c ...

  7. Synchronize对String加锁解决

    Synchronize 尽量,不要使用String常量加锁 会出现死循环问题 new String 可以使用new String加锁 package com.bjsxt.base.sync006;/* ...

  8. Synchronize对String加锁

    Synchronize 尽量,不要使用String常量加锁 会出现死循环问题 package com.bjsxt.base.sync006;/*** synchronized代码块对字符串的锁,注意S ...

  9. mysql 字符串分区_Mysql分区表的原理和优缺点

    分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表 ...

最新文章

  1. 老男孩linux培训期中学生作业文档目录展示
  2. Hbase的读写流程
  3. pylucene构建索引_java-Apache Lucene:建立索引时如何使用TokenSt...
  4. android 上下滚动文字_android高仿今日头条富文本编辑(发布文章)
  5. android手机解除root,手机显示被root什么意思(手机root怎么解除)
  6. matlab求负数分数幂问题
  7. [Java] ArrayList、LinkedList、Vector的区别
  8. 成绩的案例java_java-成绩案例
  9. qcustomplot时间坐标轴画直线_为什么鸡看到画直线会晕?
  10. linux和python那个好学_Python和C#哪个好学?老男孩python
  11. python3pygame 游戏程序_python3 pygame实现接小球游戏
  12. 我去,这么简单的条件表达式竟然也有这么多坑
  13. vue 实例化几种方式_第二节:Vue实例化
  14. 简约却不简单的科学原理闲谈(A Talk:Principles with simplicity but complicacy)
  15. 一项采用MasimoO3(R)的前瞻性研究就通气抢救疗法对COVID-19患者脑氧合的效应进行了深入探查
  16. 4G模块 EC03-DNC的常用AT指令操作及模块访问内网方法
  17. 有哪些有意思高质量的中文网站
  18. Graph Convolutional Tracking
  19. 服务器运维的日常维护工作有哪些
  20. 区别samtools faid产生的.fai文件功能和bwa index 产生的四个文件的功能

热门文章

  1. spring注解-声明式事务
  2. Python中os模块使用方法
  3. #1406 data too long for column '' at row 1
  4. storm-hbase jar包中的bolt节点源码解析
  5. v-region 地址组件无法回显问题(选择地址保存后,打开编辑,发现刚才选择的地址【省市县乡】信息消失,信息不回显)
  6. U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法
  7. B cannot be cast to java.sql.Blob
  8. 使用 angular directive 和 json 数据的 D3 带标签 donut chart示例
  9. Kylin启动异常:java.lang.outofMemoryError:Requested array size exceeds VM limit
  10. catia怎么进入装配_CATIA教程之常见去参方法