线程(Thread)的四种停止方式
1.正常的程序启动,停止
2.使用退出标记,一般程序在run()方法后,线程会正常结束。但是有一些伺服线程还在运行,他们运行时间较长,只有当外部条件满足时,他们才会停止。实现如下:
public class ThreadCease extends Thread{
private volatile boolean exit = false;
public void run(){
while(!exit){
//停止后做的事情~
}
}
3.使用线程(Thread)自带的isInterrupted()方法来结束线程。实现如下:
public class ThreadCease1 extends Thread{
public void run(){
while(!isInterrupted()){
try{
Thread.sleep(3000);
}catch(Exception e){
e.printStackTrace();
break;
}
}
}
}
注意:使用interrupted()方法来中断线程有两种情况:
3.1.1 线程处于阻塞状态,如线程中使用了sleep(),同步锁 wait(),socket的receiver,accept方法时,会使线程进入到阻塞状态,当程序调用interrupted()方法时,会抛出InterrupteException异常。阻塞中的那个方法抛出异常,通过捕获该异常,然后break跳出循环,从而结束该线程。注:不是调用了interrupted()方法就会结束线程,是捕获到了interruptedException异常后,break 跳出循环后才能结束此线程。
3.1.2 线程未处于阻塞状态,调用interrupted()方法时,实际上是通过判断线程的中断标记来退出循环。
4.stop()方法停止
Thread.stop()方法来结束线程的运行,但是很危险,一般不建议使用stop()来停止线程;不安全的原因主要有:在程序调用Thread.stop()后会抛出ThreadDeatherror()错误。并释放子线程所持有的所有锁,会导致被保护数据呈现不一致性,此过程不可控。
欢迎大家留言,一起学习,成长!!
线程(Thread)的四种停止方式的更多相关文章
- Java线程池的四种创建方式
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFix ...
- C++线程同步的四种方式(Windows)
为什么要进行线程同步? 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解.正常情况下对这种处理结果的 ...
- JMeter四种参数化方式
JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号.JMeter一共有四种参数化方式,分别是: CSV Data Set Config Function He ...
- java笔记--关于线程同步(7种同步方式)
关于线程同步(7种方式) --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3897440.html"谢谢-- 为何要使用同步? ...
- xml常用四种解析方式优缺点的分析×××××
xml常用四种解析方式优缺点的分析 博客分类: xml 最近用得到xml的解析方式,于是就翻了翻自己的笔记同时从网上查找了资料,自己在前人的基础上总结了下,贴出来大家分享下. 首先介绍一下xml语 ...
- 8237dma的四种传送方式简介
8237A有四种工作方式:单字节传送.数据块传送.请求传送和多片级联. (1)单字节传送(single mode) 单字节传送方式是每次DMA传送时,仅传送一个字节.传送一个字节之后,当前字节计数器减 ...
- 同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步: ...
- Selenium&Appium四种等待方式
一.摘要 本博文主要介绍自动化测试中,无论是selenium或是Appium的四种等待方式,合理的使用等待对代码的稳定性,测试效率都有很大的提高 隐式等待:是在尝试发现某个元素的时候,如果没能立刻发现 ...
- Java-五种线程池,四种拒绝策略,三种阻塞队列(转)
Java-五种线程池,四种拒绝策略,三种阻塞队列 三种阻塞队列: BlockingQueue<Runnable> workQueue = null; workQueue = n ...
随机推荐
- 系统学习Javaweb7----JavaScript3
学习内容: 1.JavaScript语法规则----全局函数 2.JavaScript语法规则----自定义函数 3.BOM对象 3.1BOM对象--消息框 3.2BOM对象--循环定时器 3.3BO ...
- linux 上安装 java
一.源码安装 1.本地下载 java, 并上传到 linux 上 2.解压文件 tar -zxvf jdk-7u72-linux-i586.gz 3.配置环境变量 vi /etc/profile ...
- 71)PHP,使用cookie的语法问题
1) 为啥用数组的形式,就是这样好区分,你看都是跟student相关的东西, (2)
- HTML常用数据类型
.数学函数: Math.ceil():天花板数 //大于当前小数的最小整数 Math.floor():地板数 //小于当前小数的最大整数 Math.round():四舍五入取整数 Math.rando ...
- MySQL5.7.x安装教程(tar.gz)
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 二.MySQL安装(tar.gz) 1.系统环境设置 1.1清空系统mysql 安装mysql之前需要将系统自带的my ...
- pytorch中的view函数和max函数
一.view函数 代码: a=torch.randn(,,,) b = a.view(,-) print(b.size()) 输出: torch.Size([, ]) 解释: 其中参数-1表示剩下的值 ...
- perf4j @Profiled常用写法
以下内容大部分摘抄自网络上信息. 1.默认写法 @Profiled 日志语句形如: 2009-09-07 14:37:23,734 [main] INFO org.perf4j.TimingLogge ...
- deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
1. 误差分析(Error analysis) 误差分析的目的是找到不同误差源的比重,从而指引我们接下来往哪个方向努力改进.NG建议手工统计随机100个错误的误差源,比如对于猫分类器,错误的照片可能是 ...
- 剖析String,StringBuffer,StringBuilder异同
近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便 ...
- hadoop配置文件详解、安装及相关操作补充版
一. Hadoop伪分布配置 首先应该现在profile文件添加hadoop_home操作如下: export JAVA_HOME=/usr/java/jdk expor ...