线程操作之终止线程

线程的终止时通过Thread类的abort方法来实现的,如一个现成执行时间太长,用户有可能要终止这个线程,这就要使用此方法

注意:在线程调用Abort方法时,会引发ThreadAbortExcepion 异常,如果没有捕捉异常,线程将会终止

实例

通过While判定在屏幕上输出“>”字符的线程是否为执行完毕,当线程没有执行完毕时,就计算循环次数,当达到5次时,就终止线程。

 class Program
    {
        public static void meth()
        {
            for (int i = 1; i <=4000; i++)
            {
                if (i%40==0)
                {
                    Console.WriteLine(">");
                }
                else
                {
                    Console.Write(">");
                }
            }

        }
        static void Main(string[] args)
        {
            //ThreadStart ts = new ThreadStart(meth);
            Thread th = new Thread(meth);
            th.Start();
            Console.WriteLine("线程开始启动");
            int i = 0;

            while (th.IsAlive)   //判断线程状态
            {
                i++;
                Thread.Sleep(5);   //线程挂起5秒后在执行,要不只会显示《启动和终止》
                if (i==5)
                {
                    th.Abort();   //终止线程
                    Console.WriteLine("线程终止");
                }
            }
            Console.Read();
        }

原文地址:https://www.cnblogs.com/xiaowie/p/9139356.html

时间: 2024-08-09 11:00:46

线程操作之终止线程的相关文章

java线程中断和终止线程运行

ava中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线程中断机制来实现. 首先来看Thread类三个和中断有关的方法: public class Thread { // 发出一个中断请求,把标志位设定为中断状态,不会终止线程运行. // 其他线程试图调用该方法,会检测是否有权限中断该线程(正常情况 // 下不会存在权限问题,这里可以忽略) public

《Java并发编程》之线程中断与终止线程运行

Java中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线程中断机制来实现. 首先来看Thread类三个和中断有关的方法: public class Thread { // 发出一个中断请求,把标志位设定为中断状态,不会终止线程运行. // 其他线程试图调用该方法,会检测是否有权限中断该线程(正常情况 // 下不会存在权限问题,这里可以忽略) public

Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public class Thread implements Runnable { /* What will be run. */ private Runnable target; ...... /** * Causes this thread to begin execution; the Java Virtu

线程操作学习20150905

1. ThreadPool 提供线程池的管理 ThreadPool是静态类,无构造函数,其方法都是静态. a) 主要使用的方法是: QueueUserWorkItem方法 public static bool QueueUserWorkItem(WaitCallback callBack): 将方法排入队列以便执行.此方法在有线程池线程变得可用时执行. public static bool QueueUserWorkItem(WaitCallback callBack,Object state)

Python多线程之线程创建和终止

python主要是通过thread和threading这两个模块来实现多线程支持.python的thread模块是比较底层的模块,python的threading模块是对thread做了一些封装,可以更加方便的被使用.但是python(cpython)由于GIL的存在无法使用threading充分利用CPU资源,如果想充分发挥多核CPU的计算能力需要使用multiprocessing模块. 如果在对线程应用有较高的要求时可以考虑使用Stackless Python来完成.Stackless Py

Java中如何优雅正确的终止线程

Java中终止线程的方式主要有三种: 1.使用stop()方法,已被弃用.原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的"残疾"数据,不符合完整性,所以被废弃.So, forget it! 2.使用volatile标志位 看一个简单的例子: 首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行 public class MyRunnable i

线程操作

//终止thread1线程 thread1.Abort(); //主线程挂起等待,直到thread1完全终止 thread1.Join(); //thread1线程已终止,主线程继续执行 Abort执行后线程并没有立即结束,线程在被终止之前立即进入AbortRequested状态,所以才会有你遇到的问题"线程正在运行或未被终止:它无法重新启动." 建议"在触发事件重新开启线程"前调用Join等待线程真正终止. 在abort之后线程销毁了,重新开启线程的时候没有从新实

Java并发编程-如何终止线程

我们知道使用stop().suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法: 1.使用interrupt()中断方法. 2.使用volatile boolean变量进行控制. 在使用interrupt方法之前,有必要介绍一下中断以及与interrupt相关的方法.中断可以理解为线程的一个标志位属性,表示一个运行中的线程是否被其他线程进行了中断操作.这里提到了其他线程,所以可以认为中断是线程之间进行通信的一种方式,简

C# CancellationTokenSource 终止线程 CancellationTokenSource实现对超时任务的取消

C# 使用 CancellationTokenSource 终止线程 使用CancellationTokenSource对象需要与Task对象进行配合使用,Task会对当前运行的状态进行控制(这个不用我们关心是如何孔控制的).而CancellationTokenSource则是外部对Task的控制,如取消.定时取消. 下面我们来看看示例代码 class Program { //声明CancellationTokenSource对象 static CancellationTokenSource c