Java: Java终止线程的几种方式
首先说明,使用stop方法终止的方式已经在很久之前就被废弃了,在加锁的情况下有可能会造成死锁,这里不做讨论。 1. 使用标志位终止线程 在run()方法执行完毕后,该线程就终止了。但是在某些特殊的情况下,希望run()方法中的代码一直循环执行。比如在服务端程序中可能会使用 while(true) { ... } 这样的循环结构来不断的接收来自客户端的请求。此时就可以用修改标志位的方式来结束 run() 方法。例: public class ServerThread extends Thread { // volatile修饰符用来保证其它线程读取的总是该变量的最新的值 public volatile boolean exit = false ; @Override public void run() { ServerSocket serverSocket = new ServerSocket(8080 ); while (! exit){ serverSocket.accept(); // 阻塞等待客户端消息 ... } } public static void main(String[] args) { ServerThread t = new ServerThread(); t.start(); ... t.exit = true ; // 修改标志位,退出线程 } }