面试题:interrupt()、interrupted()和isInterruptd()的区别

①共同点:都是Thread类提供的方法

②不同点:

interrupt()和isInterrupted()是实例方法,而interrupted()是静态方法;

interrupt()用于中断线程,返回值是void,而isInterrupted()和interrupted()方法的返回值类型是boolean;

isInterrupted()的作用是获取线程的中断状态;

interrupted()的作用:判断当前线程是否被中断,如果是,清除中断标记,返回true;否则返回false

* 当前线程的含义:

在main()方法中,当前线程指的是主线程,也就是main线程;

只有在创建的线程的run()方法中获取的当前线程才是创建的线程,如Thread-0、Thread-1。

通过以下代码加深对当前线程的理解,下面代码的输出结果是两个false。

main()方法中,当前线程是主线程,也就是main方法对应的线程,而主线程并没有被中断。

/**
 * @author heyunlin
 * @version 1.0
 */
public class ThreadMethodExample {

    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("run()...");
            }
        });
        
        thread.interrupt();

        System.out.println(thread.interrupted());
        System.out.println(thread.isInterrupted());
    }

}

你可能感兴趣的:(java,jvm,开发语言)