Thread.Suspend和Abort 的区别
理解:
在C#中,Thread.Suspend是一个方法,用于暂停当前线程的执行。它会导致线程停止执行并进入挂起状态,直到调用Thread.Resume方法才能继续执行。
然而,Thread.Suspend方法已被标记为不推荐使用,并且在未来的版本中可能会被移除。这是因为使用Thread.Suspend方法可能导致线程死锁或其他潜在的问题。当一个线程被暂停时,它可能会持有一些关键资源,导致其他线程无法访问这些资源。
相反,推荐使用更安全和可靠的方法来控制线程的执行,如使用Monitor、Mutex或Semaphore等同步机制,或者使用更高级的线程管理类如Task和ThreadPool。
总结起来,不建议使用Thread.Suspend方法,因为它存在潜在的问题和风险。应该使用更安全和可靠的方式来控制线程的执行。
abort就像播放器的终止,资源释放了,但是播放器没有关闭,所以产生了这样一个现象,为什么终止之后,
会调用ResetAbort来恢复,其实这个本身并不会起到任何作用,可以说abort终止了的只能重新来过,因为暂用的资源被释放了,
ResetAbort主要是恢复线程后续操作,让它执行完自我释放,这样我们就可以托管给资源回收系统。
Thread.Suspend和Abort 的区别的更多相关文章
- C#异步和多线程以及Thread、ThreadPool、Task区别和使用方法
本文的目的是为了让大家了解什么是异步?什么是多线程?如何实现多线程?对于当前C#当中三种实现多线程的方法如何实现和使用?什么情景下选用哪一技术更好? 第一部分主要介绍在C#中异步(async/awai ...
- 被废弃的 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit
最近学习多线程的知识,看到API里说这些方法被废弃了,就查了一下原因 Thread.stop 这个方法会解除被加锁的对象的锁,因而可能造成这些对象处于不一致的状态,而且这个方法造成的ThreadDea ...
- 操作系统基础知识之————单线程(Thread)与多线程的区别
单线程(Thread)与多线程的区别 (一)首先了解一下cpu: 随着主频(cpu内核工作时钟频率,表示在CPU内数字脉冲信号震荡的速度,等于外频(系统基本时间)乘倍频)的不断攀升,X86构架的硬件逐 ...
- Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
Thread.stop, Thread.suspend, Thread.resume被标记为废弃的方法.在查看JDK的文档时,提到了下面的参考文章,先是英文版,接着是中文翻译. Why is Thre ...
- Thread.currentThread()和this的区别——《Java多线程编程核心技术》
前言:在阅读<Java多线程编程核心技术>过程中,对书中程序代码Thread.currentThread()与this的区别有点混淆,这里记录下来,加深印象与理解. 具体代码如下: pub ...
- Thread.currentThread()与this的区别
Thread.currentThread()与this的区别: Thread.currentThread()方法返回的是对当前正在执行的线程对象的引用,this代表的是当前调用它所在函数所属的对象的引 ...
- java中的线程(1):如何正确停止线程Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated?
转自 : http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html 1.Why is Th ...
- Thread.suspend和println使线程死锁
Thread.suspend和println使线程死锁 package com.stono.thread2.page39; public class MyThread extends Thread{ ...
- 二、多线程之Thread中run 和start 区别
Thread使用run 和start 区别 结论:run()方法将作为当前调用线程本身的常规方法调用执行,并且不会发生多线程. System.out.println("开始测试多线程&quo ...
- C# 线程 在 sleep,suspend 之后 Abort 的方法
1) 线程在sleep时的Abort 方法:对线程函数用 catch ThreadAbortException ,并return. 示例: [csharp] view plaincopy ...
随机推荐
- 完整塔建一个spring 注解版 mybaties 过程可供复制代码
第一步引导包.新建工程maven模块 pom.xml 中导入相对应包 ++++++++++++++++++++++++++++++++++++++++++++ 1 +++++++ ...
- XAF Blazor TabbedMdi
开源项目地址:https://gitee.com/easyxaf/blazor-tabbed-mdi 前言 XAF在WinForm中采用了多文档界面(MDI),但在Blazor中却没有,在官网中也有人 ...
- tag 转 分支 branch
获得最新 git fetch origin 获取tag git tag tag 转 branch git branch newbranch vtest.1.0.FINAL --- git branch ...
- react中css里面 class中的 图片的相对地址 完美解决 backgroundImage
发现问题:缓存 之前react的图片,也在style里面,也无所谓. 刚做了一个输入框,change的时候改变图片,每次都刷新图片,关键是没缓存,这哪受得了 之前用的: 网上搜索各种插件,替换什么的, ...
- maven问题之Could not calculate build plan:
问题描述: Could not calculate build plan: Failure to transfer org.apache.maven.plugins:maven-surefire-pl ...
- 人人都是艺术家!AI工具Doodly让潦草手绘变精美画作
AI绘画界太卷了,一天一个新东西,不久前刚给大家介绍了可以一秒出图的SDXL-Turbo,今天来聊一聊另一位重磅选手Doodly 有用过Stable Diffuison的小伙伴都知道,想要生成一张高质 ...
- PXE批量安装操作系统自动化
PXEz自动化 在PXE服务器操作: *yum -y install dhcp xinetd tftp tftp-server* *yum -y install system-config-kicks ...
- DialogFragment源码分析
目录介绍 1.最简单的使用方法 1.1 官方建议 1.2 最简单的使用方法 1.3 DialogFragment做屏幕适配 2.源码分析 2.1 DialogFragment继承Fragment 2. ...
- SQLI-LABS(Less-9、10)
Less-9(GET-Blind-Time based-Single Quotes) 打开Less-9页面,可以看到页面中间有一句Please input the ID as parameter wi ...
- 记录--vue+three.js 构建 简易全景图
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近几天在学习three.js ,因为我相信只有实践才能出真理,捣鼓捣鼓做了一个简易的全景图,这里主要是分享做这个vue版全景图中遇到的问 ...