过期的suspend,resume 和stop

2023-12-12 08:48
文章标签 过期 suspend stop resume

本文主要是介绍过期的suspend,resume 和stop,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方法介绍

  1. suspend():暂停任务
  2. resume():恢复任务
  3. stop():停止任务

 

stop()

当调用stop()方法时会发生两件事:

  1. 即刻停止run()方法中剩余的全部工作,包括在catch或finally语句中,并抛出ThreadDeath异常(通常情况下此异常不需要显示的捕获),因此可能会导致一些清理性的工作的得不到完成,如文件,数据库等的关闭。

  2. 会立即释放该线程所持有的所有的锁,导致数据得不到同步的处理,出现数据不一致的问题。

suspend()和resume()必须要成对出现,否则非常容易发生死锁。

这两个操作就好比播放器的暂停和恢复。

不推荐使用suspend()去挂起线程的原因,是因为suspend()在导致线程暂停的同时,并不会去释放任何锁资源。其他线程都无法访问被它占用的锁。直到对应的线程执行resume()方法后,被挂起的线程才能继续,从而其它被阻塞在这个锁的线程才可以继续执行。

interrupt() 与 cancel()的区别

   两者实际上都是中断线程,但是后者更安全、有条理和高效,其原因跟推荐使用Executor而不直接使用Thread类是一致的。所以结合上面讲到的原则,我们应尽量采用cancel()方法,调用线程管理器ExecutorService接口的submit(Runnable task) 方法会返回一个Future<?>对象,然后调用Future.cancel()的方法来取消任务,并返回一个boolean值。

 

 

不再使用的原因

  • suspend()方法在调用后,线程不会释放已经占有的资源,而是占用着资源进入睡眠状态,这样容易引发死锁问题。
  • stop()方法在终止一个线程时并不会保证线程的资源能够正常释放。通常是没有给予线程完成资源释放工作的机会,因此会导致程序可能工作在不确定的状态下

这篇关于过期的suspend,resume 和stop的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483973

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

解决开机提示STOP:c0000218办法教程

“STOP:c0000218 {Registry File Failure}”是一个很典型的错误信息,造成错误的原因是硬盘错误或硬盘损坏。解决办法如下:   1. 从 Windows XP 光盘启动计算机。如果出现提示,请选择从光盘启动计算机必须选择的任何选项。   2. 当提示你选择“修复或故障恢复”时,请按R。这将启动Microsoft故障恢复控制台。   3. 根据提示,键

【matlab 激活】2017.11.11日后matlab统一过期需激活解决办法

在matlab安装目录中找到license目录,并创建license.lic文件,然后把以下内容copy到文件中,重启matlab。 INCREMENT Aerospace_Blockset MLM 99 permanent uncounted \ A05070F00D1EB1F92326 VENDOR_STRING=QQ=47399897 HOSTID=ANY \

证书过期傻瓜解决方案

20240906上午处理了一个gdd服务器SSL证书过期的问题,特此记录一下。 首先客户反映抖音小程序不能用然后百度阿里云,扫码登录阿里云到控制台界面查看证书域名到期情况, 发现阿里云那边记录的有效期是十月,按理说未到期,但实际证书是到期了, 用谷歌浏览器打开网页,https 会有删除线,点击旁边按钮可以看到证书过期的提示。 打开了阿里云,免费证

腾讯云的免费ssl证书过期后不占用免费额度

我申请了三张免费证书,两张过期了,已使用的数量还是1,说明已过期的不占免费额度,这样的话,只要每三个月重新申请就能一直用免费证书了。 下证很快,第一张一分钟以内,第二张大概5分钟左右。 原来之前是12个月,调整到了3个月。 重新申请的免费证书都通过了: 下载,导入到云托管域名,并验证https: 搞定! 本意没有任何宣传,只是为了分享确实有这么个东西,也对自己的开发有帮助。

memcached过期策略

memcached过期策略: 1、memcached的过期时间,有一个最大时限就是30天,若超过30天,存储时返回true,但是在取数据的时候取不到(这个key是1秒后过期的)。 2、memcached的缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向memcached存储数据时,你可能会设置一个过期时间,可以是永久也可以是一段时间,但是如果一旦给memcached分配的内存使用完毕

检查软件授权码是否过期

1.获取指定文件的授权过期时间 update_sq.sh #!/bin/bash# XML文件路径xml_file="/opt/AAS/license.xml"output_file="/root/output.txt"# 提取日期expiration=$(xmllint --xpath 'string(/license/@expiration)' "$xml_file")# 显示提取的