一、守护线程
- 守护线程设置必须在start之前;如果在start之后,设定为守护线程,设定无效,且如果线程在执行过程中,将会抛出异常:IllegalThreadStateException
- 守护线程中创建的线程默认是守护线程,可以更改
- Timer是单线程且可以设置为守护线程;GC线程是典型的守护线程
二、Runnable和Callable区别
- Runnable需要实现run方法,Callable需要实现call方法
- run方法没有返回值,call方法需要有返回值
- run方法中的异常只能自己处理,不能抛出;call方法异常可以抛出
- 使用Thread创建线程时,Runnable可以直接作为入参或者使用FutureTask封装;Callable只能使用FutureTask封装,不能直接作为入参
- 使用ExecutorService创建线程时,Runnable可以直接使用execute或submit执行;Callable只能直接被submit执行,不能被execute执行;两者被FutureTask封装后,两者皆可
三、ThreadGroup
????
四、线程同步和线程安全
五、线程池