`

中止线程

 
阅读更多

1.  使用退出标志,使线程正常退出,也就是使run方法完成后线程终止。

2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。

3.  使用interrupt方法中断线程。

其中第三种方法又分为:

(1)线程处于阻塞状态,如使用了sleep方法。

(2)使用while(!isInterrupted()){……}来判断线程是否被中断。

 

	class MyThread extends Thread{
	    BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(10);
	    @Override
	    public void run() {
	        while(true){
	            try {
	                Integer take = queue.take();// 或者直接用sleep(1000)代替
	            } catch (InterruptedException e) {
	                //需要注意:在这里如果不跳出while循环,该线程仍将继续执行,并重置中断状态为false
	                e.printStackTrace();//当interrupt()被调用,且当前线程处于等待中,会抛出该异常
	            }
	        }  
	    }  
	}

 

 

 

分享到:
评论

相关推荐

    线程外部挂起恢复控制(不使用Suspend与Resume中止线程)

    本人利用Thread.Abort()与Thread.Interrupt()可以引起目标线程异常的特点,开发了一种不使用已过时的方法来变相从外部控制线程的挂起与恢复的技术,原理简单,方便理解。 相关技术参考:...

    多线程之06三种中止线程的方法比较.docx

    ### 多线程之06三种中止线程的方法比较 #### 一、引言 在Java编程中,线程管理是一项重要的技能。有时我们需要在特定条件下终止正在运行的线程,但如何做到这一点既安全又高效呢?本文将探讨三种常见的线程中止...

    Response.Redirect 正在中止线程解决方案

    在ASP.NET开发中,我们经常会遇到“正在中止线程”(ThreadAbortException)的异常,这通常是由于在页面处理过程中使用了`Response.Redirect`或`Response.End`等方法所导致的。这些方法会中断当前线程的执行,引发异常...

    C++ 如何正确的使用线程 释放线程资源

    在C++中,正确地使用和管理线程是多线程编程中的一个关键话题。线程的创建和释放关系到资源的管理以及程序的稳定性和效率。本文将详细讨论如何在C++中正确使用线程以及如何释放线程资源,并重点阐述joinable状态和...

    易语言多线程模块

    中止线程是控制线程生命周期的重要操作。有时我们需要提前结束某个线程的执行,比如当线程完成了特定任务或出现错误。易语言提供了一套机制来安全地中止线程。这通常涉及到设置线程的退出状态、发送线程终止信号,并...

    Delphi使用API创建多线程应用实例

    在线程函数之外,可以随时调用TerminateThread (ThreadID)来中止线程。    程序运行的结果将是:  ______________________________________________________  Hi, In MultiThread ...  __________________...

    C#多线程技术.ppt

    在此期间,还可以挂起、恢复或中止线程。挂起一个线程就是让它进入睡眠状态,此时,线程仅是停止运行某段时间,不占用任何处理器时间,以后还可以恢复,从被挂起的那个状态重新运行。如果线程被中止,就是停止运行,...

    多线程编程指南

    **取消线程**:线程取消是一种机制,允许在运行时中止线程的执行,这对于响应用户请求或系统事件至关重要。 **启用或禁用取消功能**:线程取消可以是异步的或同步的,开发者可以根据需要选择合适的取消模式。 **...

    线程的三个实验.pdf

    可以通过界面按钮来启动和中止线程的运行。这里涉及的关键知识点包括: 1. **线程的创建**:在Java中,有两种主要方式创建线程。一种是通过继承`Thread`类,重写`run()`方法,然后创建`Thread`对象并调用`start()`...

    C#与.NET对多线程的处理

    除了启动线程,还可以通过`Suspend()`、`Resume()`和`Abort()`方法挂起、恢复或中止线程。不过,`Suspend()`和`Resume()`已不推荐使用,因为它们可能导致死锁。`Abort()`则会立即结束线程,但可能导致资源未释放或...

    C#实现终止正在执行的线程

    本文实例讲述了C#实现终止正在执行的线程的实现方法,并针对一些容易出错的地方进行了深入分析,具体方法如下: 一般来说,很多人都会使用Abort方法来终止线程,其实这种做法并不可取!如果你的线程正在操作临界资源...

    iOS多线程编程指南(中文版)

    - 使用适当的方法安全地中止线程运行。 - **1.5.8 线程安全的库** - 使用经过验证的线程安全库,减少出错的可能性。 #### 二、线程管理 **2.1 线程成本** - 创建和销毁线程需要消耗系统资源。 - 线程切换也会...

    c# 多线程有用的资料

    3. **任务取消**:支持正常取消后台工作,同时也可强制中止线程。 4. **异常处理**:捕获取消、强制中止和方法错误三种情况,并触发相关事件,便于释放资源。 5. **UI安全访问**:异步调用确保在工作方法中安全地...

    线程--管理线程(使线程中止,暂停,挂起等)

    本文将深入探讨如何在C#中管理线程,包括线程的中止、暂停和挂起,以及相关的同步机制。 首先,让我们讨论线程的创建与启动。在C#中,可以使用`System.Threading.Thread`类来创建线程对象,然后通过调用`Start()`...

    c# 多线程任务中结束全部线程

    在C#中,多线程是程序设计中的一个重要概念,它允许程序同时执行多个操作,从而提高程序的效率和响应性。然而,在某些情况下,我们可能需要终止正在运行的所有线程,这通常发生在应用程序需要关闭或者某个关键错误...

    2022年工控程序设计之串口设备的数据采集(共42张PPT).pptx

    Thread 类提供了多种方法来创建和管理线程,例如 Start 方法可以启动线程,Join 方法可以等待线程的完成,Abort 方法可以中止线程。 5. 工作者线程和用户界面线程之间的数据传递 工作者线程和用户界面线程之间的...

Global site tag (gtag.js) - Google Analytics