[置顶] Java 多线程学习笔记 (一)interrupt
2016-07-03 15:33
691 查看
Java 多线程怎么停止线程?
本示例将调用interrupt()方法来停止线程,但是interrupt()方法的使用效果并不像 for+break 语句那样,马上就停止循环。调用interrupt()方法仅仅是在当前线程中打了一个停止标记,并不是真的停止线程。
拓展,先来了解两个方法
1.interrupted()测试当前线程是否已经中断
运行结果:
是否停止1?=true
是否停止2?=false
end!
jdk中说明:如果程序两次调用interrupted()方法的话。第二次的结果为false;
2.isinterrupted()
运行结果:
是否停止1?=true
是否停止2?=true
两种方法的区别:
1.检查当前线程是否打上了中断标记 执行两次第二次的时候清除标记
2.第二个方法检查线程Thread对象是否打上了中断标记 执行两次不清除标记
本示例将调用interrupt()方法来停止线程,但是interrupt()方法的使用效果并不像 for+break 语句那样,马上就停止循环。调用interrupt()方法仅仅是在当前线程中打了一个停止标记,并不是真的停止线程。
拓展,先来了解两个方法
1.interrupted()测试当前线程是否已经中断
package test; import exthread.MyThread; import exthread.MyThread; public class Run2 { public static void main(String[] args) { Thread.currentThread().interrupt(); System.out.println("是否停止1?=" + Thread.interrupted()); System.out.println("是否停止2?=" + Thread.interrupted()); System.out.println("end!"); } }
运行结果:
是否停止1?=true
是否停止2?=false
end!
jdk中说明:如果程序两次调用interrupted()方法的话。第二次的结果为false;
2.isinterrupted()
package test; import exthread.MyThread; import exthread.MyThread; public class Run3 { public static void main(String[] args) { try { MyThread thread = new MyThread(); thread.start(); Thread.sleep(100); thread.interrupt(); System.out.println("是否停止1?="+thread.isInterrupted()); System.out.println("是否停止2?="+thread.isInterrupted()); } catch (InterruptedException e) { System.out.println("main catch"); e.printStackTrace(); } System.out.println("end!"); } }
运行结果:
是否停止1?=true
是否停止2?=true
两种方法的区别:
1.检查当前线程是否打上了中断标记 执行两次第二次的时候清除标记
2.第二个方法检查线程Thread对象是否打上了中断标记 执行两次不清除标记
相关文章推荐
- 文章标题
- 修改eclipse中的propersties文件的默认编码格式
- 转: Android 软件开发之如何使用Eclipse Debug调试程序详解(七)
- 使用Spring MVC统一异常处理
- 【数字安全】Security in Java
- 自定义注解+Struts2拦截器实现简单权限控制
- 转: eclipse 快捷键列表(功能清晰版本)
- Spring AbstractRoutingDataSource 实现动态数据源切换
- java 中如何声明线程安全的集合 set, map 和list【转】
- spring 中常用的两种事务配置方式以及事务的传播性、隔离级别
- Reverse Integer(java)
- Java类型信息与用反射机制编写通用的Excel导入导出
- JAVA---udp数据的发送与接收
- Java编程题目-4:数组操作问题
- quartz集群分布式(并发)部署解决方案-Spring
- JavaWeb概述(二)
- Java中public,private,protected,和默认的区别
- myeclipse中的svn的安装问题
- Java 中new Date()之hashCode
- Spring MVC 拦截器使用及实现