1、为什么不建议使用Executors来创建线程池? 除开有可能造成的OOM外,使用Executors来创建线程池也不能自定义线程的名字,不利于排查问题,所以建议是直接使用ThreadPoolExecutor来定义线程池,这样可以灵活控制 2、线程池有几种状态?每种状态分别表示什么? 3、Sychronized和ReentrantLock有哪些不同点?