过期的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

相关文章

解决开机提示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")# 显示提取的

检测数据过期的处理方法(redis过期时间、订单规定时间内支付等)

三个常见的处理方法: 1.创建的时间新启一个线程去检测当前任务,实时刷新,效率较低。 2.需要用的时候再去查询是否已过期;这个时候需要在设置的时候记录两个数据,创建时间、过期时间,当使用的时候再去判断当前数据是否已过期。 3.我们以支付以后7天自动收货为例来说明下: (1)用户支付完成以后,把订单ID插入到内存的一个DelayQueue中,同时插入到Redis中。 (2)7天之内,用户点

设置log4j2自动删除过期日志

设置log4j2保留30天内的日志,过期自动删除 <?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"><Properties><Property name="LOG_PATTERN">%highlight{%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %lo

吃透Redis系列(三):Redis管道,发布/订阅,事物,过期时间 详细介绍

Redis系列文章: 吃透Redis系列(一):Linux下Redis安装 吃透Redis系列(二):Redis六大数据类型详细用法 吃透Redis系列(三):Redis管道,发布/订阅,事物,过期时间 详细介绍 吃透Redis系列(四):布隆(bloom)过滤器详细介绍 吃透Redis系列(五):RDB和AOF持久化详细介绍 吃透Redis系列(六):主从复制详细介绍 吃透Redi

windows用户密码已经过期怎么办

用户名已过期那就更改密码啊。用户密码过期是你的组策略的问题,做了限制,对密码有使用的期限。超过这个期限后系统会提醒你密码过期。告诉你修改的方法。开始--运行,输入 gpedit.msc,打开组策略管理器。然后找到计算机配置--Windows设置--安全设置--账户策略--密码策略。然后找到密码最长使用期限,具体里面有关于密码的说明。你可以自己按照自己喜欢的将时间调一下就可以了。