线程锁中private object lockObj = new object();

这个月太忙没时间看C++ 这个月太忙没时间看C++ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
namespace LockExample
{
class Account
{
private object lockObj = new object();
int balance; //余额
Random r = new Random();
Form1 form1;
public Account(int initial, Form1 form1)
{
this.form1 = form1;
this.balance = initial;
}

/// <summary>
/// 取款
/// </summary>
/// <param name="amount">取款金额</param>
/// <returns>余额</returns>
private int Withdraw(int amount)
{
if (balance < 0)
form1.AddListBoxItem("余额:" + balance + " 已经为负值了,还想取呵!");
lock (lockObj)
{
if (balance >= amount)
{
string str = Thread.CurrentThread.Name + "取款---";
str += string.Format("取款前余额:{0,-6}取款:{1,-6}", balance, amount);
balance = balance - amount;
str += "取款后余额:" + balance;
form1.AddListBoxItem(str);
return amount;
}
else
return 0;
}
}

/// <summary>
/// 自动取款
/// </summary>
public void DoTransactions()
{
for (int i = 0; i < 100; i++)
{
Withdraw(r.Next(1,100));
}
}
}
}
想问一下,lock (lockObj) 中lockObj具体指的是什么??是什么对象?怎么没有给引用值啥的?看了很多资料还是不懂
...全文

相关推荐

C#多线程Singleton(单件)模式模板

代码如下: private static volatile T _instance = null; private static object objLock = new Object(); private T() { } public static T Instance { get { if (_instance == null) { lock (objLock) { if (_instance == null) { _instance = new T(); } } } return _instance; } } 在必要的时候需如果要刷新当前instance,可以这样写: 代码如下: p

weixin_38690376

【高速电路设计】基于协议的板级布局指南:差分信号完整性与电源热管理协同优化方案

内容概要:本文档详细介绍了规格补充学习,并在实际项目中配合仿真工具与实测手段进行验证。

Kernel_RDMA

科技中介服务机构如何提升技术评估与价值分析的专业性与效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

产业园区运营负责人如何精准识别园区内企业技术需求?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

RG-EG系列出口网关RGOS配置手册

源码链接: https://pan.quark.cn/s/66d08a7ad775 本指南是锐捷网络为其RG-EG系列出口网关编写的配置指南,其中包含了从基础设置到高级操作的诸多内容。RG-EG系列出口网关是由锐捷网络开发的一款高性能网关设备,该产品专为出口网络场景设计,致力于实现高效且安全的网络数据流量监管与操控功能。以下为指南中所详述的几个核心知识点的阐释: 1. 命令行界面(CLI) 命令行界面是网关设备与使用者进行沟通的关键途径,使用者可通过在CLI中输入特定的文本指令来实施对网关设备的监控与设置。锐捷网络的CLI支持多种命令状态,每种状态所包含的可配置指令不尽相同,这样便于使用者依据不同的管理需求来选用合适的命令状态。 2. 基础管理 基础管理通常涵盖设备的基本设定,例如时间与日期的设定,以及系统软件的更新维护等。对于网关设备而言,基础管理具有至关重要的地位,因为它为网关设备的正常运作打下了坚实的基础。 3. 软件授权管理 软件授权管理涉及确保网关设备运行的是合法的软件版本,并对软件升级和授权进行管理。这有助于维护网络的安全性与设备的稳定性。 4. 系统日志管理 系统日志管理是监控网关设备运行状态的重要方法。通过记录和分析设备运行时的日志信息,网络管理员能够及时发现并处理设备中出现的故障。 5. 异常告警 异常告警功能使网关设备具备了主动识别并汇报潜在问题的能力。通过设定告警条件及接收告警的方式,管理员能够迅速应对设备异常,从而避免可能的网络中断或性能降低。 6. 网络管理 网络管理部分通常涉及对网关设备内各种网络功能的设定与优化,例如路由管理、行为管理等。这些功能对于维持网络的高性能与安全性具有不可替代的作用。 7. WLAN方面配置 对于集成无...

bnpack
评论 9
收藏 已收藏
分享
返回顶部
这个月太忙没时间看C++
C# 111,129 成员 642,538 内容