线程_死锁_解锁
来源:互联网 发布:忘记数据库密码 编辑:程序博客网 时间:2024/06/06 09:45
线程死锁<12/9/2017>
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Threading;namespace 线程{ class Program { public static object o1 = new object(); public static object o2 = new object(); static void Main(string[] args) { Thread t1 = new Thread( delegate () { lock (o1) { Console.WriteLine(Thread.CurrentThread.Name+"得到o1"); lock (o2) { Console.WriteLine("得到o2"); } } Console.WriteLine("结束"); } ); Thread t2 = new Thread( () => { lock (o2) { Console.WriteLine(Thread.CurrentThread.Name + "得到o2"); lock (o1) { Console.WriteLine("得到o1"); } } Console.WriteLine("完成"); } ); t1.Name = "t1"; t2.Name = "t2"; t1.Start(); t2.Start(); } }}
互相拿不到钥匙,造成死锁
线程解锁<12/9/2017>
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Threading;namespace 线程{ class Program { public static object o1 = new object(); public static object o2 = new object(); static void Main(string[] args) { //同步 异步 Thread t1 = new Thread( delegate () { if (Monitor.TryEnter(o1))//试图获取对象的排他锁or互斥锁 { Console.WriteLine(Thread.CurrentThread.Name + "拿到o1"); Monitor.TryEnter(o2); Console.WriteLine(Thread.CurrentThread.Name + "拿到o2"); } } ); Thread t2 = new Thread( delegate () { if (Monitor.TryEnter(o2))//试图获取对象的排他锁or互斥锁 { Console.WriteLine(Thread.CurrentThread.Name + "拿到o1"); Monitor.TryEnter(o1); Console.WriteLine(Thread.CurrentThread.Name + "拿到o2"); } } ); t1.Start(); t2.Start(); } }}
很好的解决了普通互斥锁/排他锁所带来的弊端
阅读全文
0 0
- 线程_死锁_解锁
- 黑马程序员_线程死锁
- [windows]_[避免线程死锁]
- Java基础_线程_多线程_死锁
- 线程死锁测试_加锁次序导致死锁
- 线程_死锁_生产者消费者模式(信号灯法)_任务调度JAVA180-182
- 04_多线程_死锁
- Java基础第十一天学习日记_线程、同步、死锁
- 操作系统_死锁
- 捡到iphone6解锁_?ehlq
- GCD线程死锁解锁案例分析
- 黑马程序员_多线程技术_(线程的创建 Thread和Runnable、死锁、线程间通信、join、yield)
- 关于同步_死锁_why
- 黑马程序员_多线程死锁
- 黑马程序员_多线程(死锁)
- 黑马程序员_Java基础_线程基础,创建,同步(单例设计模式的同步),死锁
- 苹果6sid解锁_苹果7plus解锁
- 黑马程序员_线程
- Bootstrap modal 多弹窗之叠加实现ESC快捷键关闭窗口
- 【R语言 linux环境配置】linux下安装R语言
- 【Java】获取2个日历类型的时间相差多少年、月、天、小时、分钟、秒
- BZOJ-1059 二分图匹配
- java开发环境配置(Windows)
- 线程_死锁_解锁
- http://www.cnblogs.com/study-everyday/p/6140580.html
- Java8 Optional(二)
- android关于shape的gradient属性详解
- 自动化测试基础
- PHP 面向对象笔记
- Android ppi 对照 及 api level
- android 7.1悬浮窗系统权限问题
- C++ map注意事项