什么是线程的中断?

问题描述

请教,什么是线程的中断(interrupt)呢?还有就是什么是抛出中断异常(InterruptedException)啊?能不能形象的说明一下。另外线程中断有什么应用啊?谢谢

解决方案

引用请教,什么是线程的中断(interrupt)呢?如果一个线程在waiting,或者sleeping或者其它类似动作的时候,你可以发出一个interrupt的指令中断这写动作引用还有就是什么是抛出中断异常(InterruptedException)啊?能不能形象的说明一下。另外线程中断有什么应用啊?谢谢 最简单的应用是ThreadPoolExecutor.Worker#interruptIfIdle(),看看源码
解决方案二:
给你举个例子:在应用socket编程的时候,需要创建一个serversocket实例,serversocket类的accept方法就是阻塞方法,即accept会一直等在那里,直到有一个连接请求到达,程序才继续执行。这时候问题就来了,如果没有连接请求,程序会一直阻塞在那里,即不会往下执行,这时候我们就需要中断他。例如可以设置一个等待时间,如果超过此时间,就中断accept方法。hope it helpful to you!

时间: 2024-09-14 05:11:47

什么是线程的中断?的相关文章

线程管理(三)线程的中断

线程的中断 一个多个线程在执行的Java程序,只有当其全部的线程执行结束时(更具体的说,是所有非守护线程结束或者某个线程调用System.exit()方法的时候),它才会结束运行.有时,你需要为了终止程序而结束一个线程,或者当程序的用户想要取消某个Thread对象正在做的任务. Java提供中断机制来通知线程表明我们想要结束它.中断机制的特性是线程需要检查是否被中断,而且还可以决定是否响应结束的请求.所以,线程可以忽略中断请求并且继续运行. 在这个指南中, 我们将开发一个程序,它创建线程,然后在

线程-操作系统的中断和程序的中断

问题描述 操作系统的中断和程序的中断 操作系统的中断和java程序中的线程中断Thread.interrupted()有什么区别 解决方案 操作系统中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被"打断"的程序. 中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断.时钟中断.控制台中断等.第二类是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本

进度条 线程中断-进度条执行一次后,线程没有中断,第二次点击鼠标事件时不更新

问题描述 进度条执行一次后,线程没有中断,第二次点击鼠标事件时不更新 我是设定boolean来中断线程,执行一次进度条后二次点击鼠标事件时不再更新且弹出的搜索条窗口不消失,导致界面不能进行任何操作,这是线程没中断引起的吗?我是在一个主main函数中执行的流程 JProgressBar comp = new JProgressBar(); //进度条 int value = 0; private boolean bg001=true; JDialog dialog = new JDialog((F

《Java程序员面试秘笈》—— 1.4 线程的中断

1.4 线程的中断 如果一个Java程序有不止一个执行线程,当所有线程都运行结束的时候,这个Java程序才能运行结束:更确切地说应该是所有的非守护线程运行结束时,或者其中一个线程调用了System.exit()方法时,这个Java程序才运行结束.如果你想终止一个程序,或者程序的某个用户试图取消线程对象正在运行的任务,就需要结束这个线程. Java提供了中断机制,我们可以使用它来结束一个线程.这种机制要求线程检查它是否被中断了,然后决定是不是响应这个中断请求.线程允许忽略中断请求并且继续执行. 在

java线程阻塞中断和LockSupport的常见问题

上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现.   在介绍之前,先抛几个问题.   Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? Thread.interrupt()会中断线程什么状态的工作? RUNNING or BLOCKING? 一般Thread编程

java线程阻塞中断与LockSupport使用介绍_java

上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现. 在介绍之前,先抛几个问题. Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? Thread.interrupt()会中断线程什么状态的工作? RUNNING or BLOCKING? 一般Thread编程需要关注

Java怎样中断一个运行中的线程

程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决, 将导致意外的行为以及细微的.难以发现的错误. 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程. 背景中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其 当前的操作.线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个程序.虽然初次看来 它可能显得简单,但是,你必须进行一些预警以实现期望的结果.你最好还是牢记以下的几点告诫. 首先,忘掉Th

详解Java多线程编程中线程的启动、中断或终止操作_java

线程启动: 1.start() 和 run()的区别说明start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new

Java线程中断的本质深入理解

    Java的中断是一种协作机制.也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己. 一.Java中断的现象 首先,看看Thread类里的几个方法:  public static boolean interrupted 测试当前线程是否已经中断.线程的中断状态 由该方法清除.换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况