e.printStackTrace();
}
}
}
但是上面的代码或许有些不妥,或许用例子更能把问题说清楚。你怎么知道该代码
段会发生阻塞?interrupt()函数到底是什么意思呢?首先说明的是,interrupted()方法只
能解决跑出 InterruptedException 异常的阻塞。而 interrupt()并不是关闭阻塞线程,而
且解除阻塞。那这里就举出一个关闭线程阻塞的例子把:
1 public class BlockTask extends Thread {
2 @Override
3 public void run() {
4 try {
5 sleep(10000);
6 } catch (InterruptedException e) {
7 System.out.println("if yout use interrupt you will see me");
8 } 9
10 }
11 public static void main(String[] args)throws Exception {
12 // TODO Auto-generated method stub
13 BlockTask task = new BlockTask();
14 task.start();
15 Thread.sleep(1000);
16 task.interrupt();
17 }
18 }
③上面说了, interrupt()只能解决 InterruptedException 的阻塞的线程,那么遇
到一些其他的 io 阻塞怎么处理呢?这个时候 java 都会提供相应的关闭阻塞的办法。例如,
服务器可能需要等待一个请求(request),又或者,一个网络应用程序可能要等待远端主
机的响应,这个时候可以使用套接字 close()方法
1 public class SocketTask extends Thread {
2 private volatile ServerSocket server;