Skip to main content

Posts

Showing posts from September, 2011

How to kill a running thread properly

From: http://blog.tianya.cn/blogger/post_read.asp?BlogID=3668353&PostID=32699671 问题   Java中提供了很多调度线程的方法,上一节介绍了其中一种控制线程的方法:如何等待一个线程结束。那么如果不希望等待线程结束,而是根据问题的需要随时都要中断线程使其结束,这种对线程的控制方法该如何实现呢?   解决思路   首先必须先明确“中断”这个概念的实际含义,这里的中断是指一个线程在其任务完成之前被强行停止,提前消亡的过程。查阅JDK的帮助文档,可以找到这样一个和中断有关的方法:interrupt()。   它的语法格式如下所示:   public void interrupt()   该方法的功能是中断一个线程的执行。但是,在实际使用当中发现,这个方法不一定能够真地中断一个正在运行的线程。下面通过一个例子来看一看使用interrput()方法中断一个线程时所出现的结果。程序代码如下所示:   // 例4.4.1 InterruptThreadDemo.java   class MyThread extends Thread   {   public void run()   {   while(true) // 无限循环,并使线程每隔1秒输出一次字符串   {   System.out.println(getName()+' is running');   try{   sleep(1000);   }catch(InterruptedException e){   System.out.println(e.getMessage());   }   }   }   }   class InterruptThreadDemo   {   public static void main(String[] args) throws InterruptedException   {   MyThread m=new MyThread(); // 创建线程对象m   System.out.println('Starting thread...');   m.start(); // 启动线程m   Thread.sleep(2000); //主线程休眠2秒,使...