博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java并发编程初级篇(五):线程中断
阅读量:6407 次
发布时间:2019-06-23

本文共 1238 字,大约阅读时间需要 4 分钟。

hot3.png

在Java API中,提供了关于线程中断的两个方法。Thread.interrupt()方法会给线程设置一个中断状态,Thread.interrupted()则用来判断中断状态。

下面我们来看一个例子:

定义一个线程类,我们在run()方法中定义一个循环来判断线程中断状态,一旦线程中断状态为true,结束线程并打印中断信息。

public class Task implements Runnable {    @Override    public void run() {        System.out.printf("%s: I am starting work.\n", Thread.currentThread().getName());        try {            while (true) {                if (Thread.interrupted()) throw new InterruptedException();            }        } catch (InterruptedException e) {            System.out.printf("%s: I am interrupted.\n", Thread.currentThread().getName());        }    }}

定义主方法类,在主方法类中我们启动这个线程并持续一段时间后设置这个子线程线程的中断状态。

public class Main {    public static void main(String[] args) {        Task task = new Task();        Thread thread = new Thread(task);        thread.start();        try {            TimeUnit.SECONDS.sleep(5);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.printf("%s: Setting interrupt flag.\n", Thread.currentThread().getName());        thread.interrupt();    }}

查看控制台日志你会发现,在主线程中设置子线程中断状态后,子线程终止执行。

Thread-0: I am starting work.main: Setting interrupt flag.Thread-0: I am interrupted.

 

转载于:https://my.oschina.net/nenusoul/blog/792839

你可能感兴趣的文章
#CCNA#IP地址、子网划分参考资料网址
查看>>
比较不错的图片上传插件
查看>>
判偶不判奇
查看>>
Sequelize 数据库的支持
查看>>
BigDecimal类的加减乘除
查看>>
lighttpd中实现每天一个访问日志文件
查看>>
node.js发送邮件email
查看>>
查看nginx配置文件路径的方法
查看>>
接口性能调优方案探索
查看>>
kali安装包或更新时提示“E: Sub-process /usr/bin/dpkg return”
查看>>
网站管理后台模板 Charisma
查看>>
EL:empty的用法
查看>>
Saltstack配置之 nodegroups
查看>>
Servlet和JSP优化经验总结
查看>>
squid使用rotate轮询(分割)日志
查看>>
VS2015安装EF Power Tools
查看>>
MySQL主从复制(笔记)
查看>>
keepalived高可用集群的简单配置
查看>>
Android Java Framework显示Toast(无Activity和Service)
查看>>
通过 SignalR 类库,实现 ASP.NET MVC 的实时通信
查看>>