博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Thread
阅读量:5895 次
发布时间:2019-06-19

本文共 1603 字,大约阅读时间需要 5 分钟。

比较好的博客文章:

https://www.cnblogs.com/wyt007/p/9486752.html

 

知识点:

  1. 创建线程
  2. 暂停线程
  3. 线程等待
  4. 终止线程
  5. 监测线程状态
  6. 线程优先级
  7. 前台线程和后台线程
  8. 向线程传递参数
  9. 使用C#中的lock关键字
  10. 使用Monitor类锁定资源
  11. 处理异常
  12. 线程同步-执行基本的原子操作(Interlocked)
  13. 线程同步-使用Mutex类
  14. 线程同步-使用SemaphoreSlim类
  15. 线程同步-使用AutoResetEvent类
  16. 线程同步-使用ManualResetEventSlim类
  17. 线程同步-使用CountdownEvent类
  18. 线程同步-使用Barrier类
  19. 线程同步-使用ReaderWriterLockSlim类
  20. 线程同步-使用SpinWait类
  21. 使用线程池-在线程池中调用委托
  22. 使用线程池-向线程池中放入异步操作
  23. 使用线程池-线程池与并行度
  24. 使用线程池-实现一个取消选项
  25. 使用线程池-在线程池中使用等待事件处理器及超时
  26. 使用线程池-使用计时器
  27. 使用线程池-使用BackgroundWorker组件
  28. 使用任务并行库-创建任务
  29. 使用任务并行库-使用任务执行基本的操作
  30. 使用任务并行库-组合任务
  31. 使用任务并行库-将APM模式转换成任务
  32. 使用任务并行库-将EAP模式转换成任务
  33. 使用任务并行库-实现取消选项
  34. 使用任务并行库-处理任务中的异常+
  35. 使用任务并行库-并行运行任务
  36. 使用任务并行库-使用TaskScheduler配置任务的执行
  37. 处理问题:线程死锁状态下处理

 

 

在解释死锁如何发生以及如何阻止死锁的过程中,你似乎遇到了问题。

当两个( 最小二) 线程试图获取已经被另一个锁锁定的资源的锁时,就会发生死锁。 线程 1锁定资源 1尝试获取对资源 2的锁定。 同时,线程 2对资源 2有一个锁,它尝试获取对资源 1的锁。 两个线程永远不会放弃锁,因此发生死锁。

避免死锁的最简单方法是使用超时值。 Monitor类( system.threading.monitor ) 可以在获取锁期间设置超时。

例子

1
2
3
4
5
6
7
8
9
10
11
if
(Monitor.TryEnter(
this
, 500))
{
//critical section
}
catch
(Exception ex)
{
}
finally
{
 
Monitor.Exit();
}

Thread 类常用的属性和方法

下表列出了 Thread 类的一些常用的 属性

属性 描述
CurrentContext 获取线程正在其中执行的当前上下文。
CurrentCulture 获取或设置当前线程的区域性。
CurrentPrinciple 获取或设置线程的当前负责人(对基于角色的安全性而言)。
CurrentThread 获取当前正在运行的线程。
CurrentUICulture 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
ExecutionContext 获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息。
IsAlive 获取一个值,该值指示当前线程的执行状态。
IsBackground 获取或设置一个值,该值指示某个线程是否为后台线程。
IsThreadPoolThread 获取一个值,该值指示线程是否属于托管线程池。
ManagedThreadId 获取当前托管线程的唯一标识符。
Name 获取或设置线程的名称。
Priority 获取或设置一个值,该值指示线程的调度优先级。
ThreadState 获取一个值,该值包含当前线程的状态。

下表列出了 Thread 类的一些常用的 方法

转载于:https://www.cnblogs.com/mrray/p/10774513.html

你可能感兴趣的文章
【leetcode】935. Knight Dialer
查看>>
Scalable Web Architecture and Distributed Systems
查看>>
SSH连接远程终端实用教程
查看>>
Python迁移MySQL数据到MongoDB脚本
查看>>
socket编程之TCP/UDP
查看>>
Flutter | 状态管理指南篇——Provider
查看>>
CUDA和TensorFlow的版本匹配问题
查看>>
gerrit安装及其注意事项
查看>>
设置grid行字体颜色为红色
查看>>
jQuery 快捷操作
查看>>
windows docker
查看>>
Springboot中发送邮件util
查看>>
「小程序JAVA实战」小程序的视频展示页面初始化(63)
查看>>
瀑布开发模式和敏捷开发模式
查看>>
1.单一职责原则
查看>>
98.Ext.form.Label组件的基本用法
查看>>
Maven配置ojdbc14-10.2.0.4.0.jar
查看>>
Java的封装性、继承性和多态性
查看>>
靶形数独
查看>>
支持向量机(四)——非线性支持向量机
查看>>