synchronized和ReentrantLock之多线程同步详解
https://www.jianshu.com/p/96c89e6e7e90
notify(),notifyAll()锁池,等待池
https://blog.youkuaiyun.com/djzhao/article/details/79410229
让线程阻塞的几种方法join()方法,Executor的invokeAll()方法,future.get()方法
ExecutorService exec= Executors.newFixedThreadPool(5); try { List<Future<String>> futures = exec.invokeAll(new ArrayList<Callable<String>>()); } catch (InterruptedException e) { e.printStackTrace(); }