1. interrupt(),interrupted()与isInterrupted()的区别
(1)interrupt()是对线程的一个中断操作
首先,interrupt()方法比较好理解,是对线程的一个中断操作,没有返回值。但实际上,改方法并不会终止一个正在运行的线程。调用interrupt()方法只是在调用线程中打了一个停止的标记,并不是真的停止线程。若要停止线程,需配合其他操作。
(2)interrupted()是一个静态方法,对运行该方法的线程起作用
interrupted()与isInterrupted()都是返回boolean状态,判断线程是否已终止。区别是前者是一个静态方法,只对运行改方法的线程起作用,可类比Thread.sleep方法;而后者不是静态方法,是对调用方起作用。
(3)interrupted()执行以后具有将状态标识置位false的功能
interrupted()执行以后具有状态置位的功能,也就是说,如果第一次调用Thread.interrupted()返回true,再调用一次改方法会返回false,因为状态被置位了。但isInterrupted()仅仅返回线程中断状态,并无置位功能。