Java。在Java中停止线程的三种方法
2018-03-06 14:34
309 查看
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。
第一种: 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终止线程的例子。public class ThreadFlag extends Thread
{
public volatile boolean exit = false;
public void run()
{
while (!exit);
}
public static void main(String[] args) throws Exception
{
ThreadFlag thread = new ThreadFlag();
thread.start();
sleep(5000); // 主线程延迟5秒
thread.exit = true; // 终止线程thread
thread.join();
System.out.println("线程退出!");
}
}第二种:
使用Thread API
thread.stop(); 虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程
第三种:
使用interrupt方法终止线程。
第一种: 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终止线程的例子。public class ThreadFlag extends Thread
{
public volatile boolean exit = false;
public void run()
{
while (!exit);
}
public static void main(String[] args) throws Exception
{
ThreadFlag thread = new ThreadFlag();
thread.start();
sleep(5000); // 主线程延迟5秒
thread.exit = true; // 终止线程thread
thread.join();
System.out.println("线程退出!");
}
}第二种:
使用Thread API
thread.stop(); 虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程
第三种:
使用interrupt方法终止线程。
public class ThreadInterrupt extends Thread { public void run() { try { sleep(50000); // 延迟50秒 } catch (InterruptedException e) { System.out.println(e.getMessage()); } } public static void main(String[] args) throws Exception { Thread thread = new ThreadInterrupt(); thread.start(); System.out.println("在50秒之内按任意键中断线程!"); System.in.read(); thread.interrupt(); thread.join(); System.out.println("线程已经退出!"); } }
相关文章推荐
- java停止线程的方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- java基础学习__多线程(停止线程,守护线程,join方法)
- java中的interrupt和stop方法——java中线程停止的方法
- Java 创建线程的三种方法比较
- Java多线程初学者指南(7):向线程传递数据的三种方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- Java安全停止线程方法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- JAVA创建线程的三种方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- java多线程编程之向线程传递数据的三种方法
- JAVA实现线程的三种方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- Java创建线程的三种方法比较及用法
- 7. 初学Java多线程:向线程传递数据的三种方法
- Java实现线程的三种方法
- 初学Java多线程:向线程传递数据的三种方法
- 七、初学Java多线程:向线程传递数据的三种方法(没感觉三种方法有什么区别?)