Java并发编程示例(四):可控的线程中断
在上一节“线程中断”中,我们讲解了如何中断一个正在执行的线程以及为了中断线程,我们必须对Thread动点什么手脚。一般情况下,我们可以使用上一节介绍的中断机制。但是,如果线程实现了一个分配到多个方法中的复杂算法,或者方法调用中有一个递归调用,我们应该使用更好的方式来控制线程的中断。为此,Java提供了InterruptedException异常。当检测到中断请求时,可以抛出此异常,并且在run()方法中捕获。
在本节,我们将使用一个线程查找指定目录及其子目录下文件来演示通过使用InterruptedException异常控制线程中断。
知其然
按照下面所示步骤,实现示例程序。
1.创建一个名为FileSearch的类,并且实现Runnable接口。代码如下:
publicclassFileSearchimplementsRunnable{
2.声明两个变量,一个用于需要查找的文件名,一个用于初始化查找的目录;实现类的构造函数,并用构造函数的参数初始化刚刚声明的两个变量。代码如下:
privateStringinitPath; privateStringfileName;
publicFileSearch(StringinitPath,StringfileName){ this.initPath=initPath; this.fileName=fileName; }