文档章节

Java并发编程初级篇(五):线程中断

阿拉德大陆的魔法师
 阿拉德大陆的魔法师
发布于 2016/11/23 13:47
字数 295
阅读 100
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

在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.

 

© 著作权归作者所有

阿拉德大陆的魔法师
粉丝 27
博文 91
码字总数 83019
作品 0
西城
程序员
私信 提问
加载中
请先登录后再评论。
【原创】Java并发编程系列11 | 线程调度

  20大进阶架构专题每日送达       Java并发编程   本文为何适原创并发编程系列第 11 篇,前面几篇没看过的,可以在文末找到前几篇的跳转链接。本文介绍线程调度的如下几个操作:  ...

java进阶架构师
01/07
0
0
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
4.1K
8
java 并发(五)---AbstractQueuedSynchronizer

文章部分图片和代码来自参考文章。 LockSupport 和 CLH 和 ConditionObject 阅读源码首先看一下注解 ,知道了大概的意思后,再进行分析。注释一开始就进行了概括。AQS的实现是基于FIFO等待队...

osc_3fp081wq
2018/12/11
7
0
安卓中高级开发工程师面试之——面试永远逃不掉的Java线程面试题

不管你是Java工程师还是安卓开发工程师,只要你是计算机开发工程师,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大...

小饼干的梦
2018/10/12
0
0
JAVA并发编程-1-线程基础

JAVA并发编程-1-线程基础 一 、基础概念 1,cpu核心数与线程数 核心数 : 线程数 = 1 : 1 什么意思呢,就是说如果是一个8核的cpu,那么该cpu会至少支持8个线程同时运行 intel引入了超线程技...

瓶子君JK
04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的问题

输入命令解决即可 npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

千年典韦
11分钟前
10
0
测试jar 是否完整有错

cd WEB-INF/lib/for j in *.jar; do echo $j; jar tvf $j > /dev/null ; echo $j done; done

xiaodong16
16分钟前
19
0
ats02.

https://xdays.me/proxy%E6%9C%8D%E5%8A%A1%E5%99%A8-trafficserver%E5%9F%BA%E7%A1%80/ apache traffic server 简称ats 入坑(一)开始使用...

MtrS
16分钟前
11
0
Elasticsearch如何查询使用JSON字符串的DSL

背景 Java处理ES查询逻辑,有一种情况是用户从其他地方粘贴或者手动输入的JSON字符串的DSL语句;这个时候就没法使用QueryBuilder来构建所需要的SearchSource。查了查发现有个Wrapper的方式可...

叫我哀木涕
今天
19
0
JDBC:ResultSet Types

ResultSet Types 用于确定ResultSet的某些特征和功能。 ResultSet.TYPE_FORWARD_ONLY 只能调用 next,不能调用 previous 。否则报错 ResultSet.TYPE_SCROLL_INSENSITIVE 能调用 next/previou...

mrsuperli
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部