java多线程与线程池-05并发编程应用
创始人
2024-05-31 23:08:24
0

并发编程应用

第8章 结束线程与线程池任务

8.1 stop()与destroy()

JDK1.5以前版本,在Thread类中提供了stop()和destroy()方法,用于线程的停止和销毁。

stop()方法是不安全的,使用这个方法停止线程,可以解锁所有和该线程相关的监视器。那些原来受监视器保护的对象会处于不一致的状态,因此受损对象可能变得对其他线程可见,从而导致任意行为的发生。

destroy()方法的设计初衷是为了销毁线程,该线程所持有的任何监视器仍然保持锁定。但是,该方法从未真正实现。如果目标线程持有保护关键系统资源的锁,当线程被销毁后,则无法再次访问该资源,这将直接导致死锁。

8.2 状态值结束线程

参见3.3.3节,使用状态值结束线程运行。

8.3 shutdown()与shutdownNow()

如何使用shutdown()与shutdownNow()方法关闭线程池中的任务,参见4.1.2节和4.3.2节相关内容。

8.4 线程休眠

线程休眠就是使正在执行任务的线程,进入WAITING状态。这时会释放当前线程占用的监视器锁,而且CPU不会再给该任务分配资源。线程的WAITING与BLOCKED状态完全不同,这是一种非常经济的、不占用系统资源的休眠状态。

参见3.1节,通过Object对象的wait()/notify()方法,休眠或唤醒线程。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...