C# 集合 — Hashtable 线程安全





private Hashtable _ht = Hashtable.Synchronized(new Hashtable());
static void Main(string[] args)
{
new Program().TestLock();
Console.WriteLine($"主线程:{Thread.CurrentThread.ManagedThreadId}");
Console.ReadKey();
} public void TestLock()
{
Task.Factory.StartNew(obj => SyncMethodA((string)obj), "laowang");
Task.Factory.StartNew(obj => SyncMethodB((string)obj), "liupangzi");
Thread.Sleep();
Console.WriteLine($"输出值:{ _ht[0]}");
} private void SyncMethodA(string param)
{
Console.WriteLine($"方法A线程:{Thread.CurrentThread.ManagedThreadId}");
lock (_ht.SyncRoot)
{
Thread.Sleep();
_ht[] = "SyncMethodA";
Console.WriteLine($"A方法输出值:{ _ht[0]}");
}
} private void SyncMethodB(string param)
{
Console.WriteLine($"方法B线程:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine($"B方法输出值:{ _ht[0]}");
_ht[] = "SyncMethodB";
}


C# 集合 — Hashtable 线程安全的更多相关文章
- C# Synchronized 和 SyncRoot 实现线程同步的源码分析及泛型集合的线程安全访问
转载:http://blog.csdn.net/zztfj/article/details/5640889 Synchronized vs SyncRoot 我们知道,在.net的一些集合类型中,譬如 ...
- [转帖]C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
C#中字典集合HashTable.Dictionary.ConcurrentDictionary三者区别 https://blog.csdn.net/yinghuolsx/article/detail ...
- Java中的集合和线程安全
通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所 ...
- 通过Collections将集合转换为线程安全类集合
通过Collections将集合转换为线程安全类集合 List集合: List<String> list=new ArrayList<String>();list.add(&q ...
- 编写高质量代码改善C#程序的157个建议——建议22:确保集合的线程安全
建议22:确保集合的线程安全 集合线程安全是指多个线程上添加或删除元素时,线程键必须保持同步. 下面代码模拟了一个线程在迭代过程中,另一个线程对元素进行了删除. class Program { sta ...
- Vector、HashTable线程不安全示例
下面这样写法是Vector线程不安全的写法: import java.util.Vector; public class Test { private static Vector<Integer ...
- Java并发编程之set集合的线程安全类你知道吗
Java并发编程之-set集合的线程安全类 Java中set集合怎么保证线程安全,这种方式你知道吗? 在Java中set集合是 本篇是<凯哥(凯哥Java:kagejava)并发编程学习> ...
- Day10_53_Collections.synchronizedList() 将Arraylist集合转换为线程安全的集合
将Arraylist集合转换为线程安全的集合 import java.util.ArrayList; import java.util.Collections; import java.util.Li ...
- C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
C#中HashTable.Dictionary.ConcurrentDictionar三者都表示键/值对的集合,但是到底有什么区别,下面详细介绍 一.HashTable HashTable表示键/值对 ...
随机推荐
- Translate this app.config xml to code? (WCF) z
http://stackoverflow.com/questions/730693/translate-this-app-config-xml-to-code-wcf <system.servi ...
- 利用 Gitbook 生成文档中心站点
经过一个多月,Bugtags 最近上线了自己的文档站点:docs.bugtags.com,在这里你可以找到 Bugtags 集成.使用相关的绝大部分问题. 在这之前我们使用的是第三方提供的帮助中心产品 ...
- django 模板if判断的时候==两边需要有空格
比如 {%if a=='y'%}错误,{%if a =='y'%}也是错误的 只能是{%if a == 'y'%}这样才行
- div 两列布局,左侧固定宽度px,右侧自适应宽度,满屏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- NoCache
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Ca ...
- Grunt 之 watch 和 livereload
现在 watch 中已经集成了 livereload ,所以把它们放在一起说明. watch 可以监控特定的文件,在添加文件.修改文件.或者删除文件的时候自动执行自定义的任务,比如 livereloa ...
- 内网安装ubuntu包
到http://packages.ubuntu.com搜索包下载下来, 再安装.
- Jsp:useBean标签的使用
1.<jsp:useBean id="为Bean起的别名(随意起)" class="Bean的目录,从包名开始写" scope="page | ...
- Java Web架构知识整理——记一次阿里面试经历
惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里 ...
- 自定义模板语言之simple_tag和自定义过滤器
扩展你的模板系统 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为两步: 1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一 ...