线程之interrupted()和isInterrupted()方法的区别
这两个方法非常相似,如果不好好区分很容易混淆:
一、interrupted()方法有两种实现方式:
- static boolean interrupted() :测试当前线程(即正在执行该指令的线程)是否被中断。注意,这是一个静态方法;而且这个调用有一个副作用——它将当前线程的中断状态重置为false;
- void interrupted() :调用该方法将向线程发送中断请求。线程的中断状态将被设置为ture.如果当前该线程被一个sleep调用阻塞,则抛出一个InterruptedException异常;
二、isInterrupted方法是一个实例方法,功能是检查是否有线程被中断,调用这个方法不会改变中断状态。