面试总结-多线程

168 阅读1分钟

1.线程中断

可调用interrupt方法改变线程的中断状态,在线程中使用isInterrupted判断当前线程是否被中断

2.线程的6种状态:

New(新创建):使用如new Thread()创建一个新线程

Runnable(可运行):调用了线程的start()方法

Blocked(被阻塞):线程试图获取一个内部的对象锁,但该锁被其他线程持有,则进入阻塞

Waiting(等待):调用了wait等方法需要其余方法唤醒时

Timed waiting(计时等待):设置过超时参数的方法,执行时会进行计时等待

Terminated(被终止):run方法执行完正常死亡或因异常意外死亡

3.守护线程(后台线程)

   运行于后台的线程,典型的就是GC线程

4.线程异常处理器

   具体怎么配还要研究下

5.竞争与锁

   加锁的方式:ReentrantLock进行显式的声明锁,或者使用synchronized声明锁,这两类都是可重入锁

   ReentrantLock可声明条件对象来使线程进入等待和唤醒的状态,等同于synchronized的wait和notifyAll

    对象锁和方法锁本质一样,都是获取一个对象的锁,方法锁就是获取当前对象的锁

6.CAS原理图