操作系统管理哪些硬件? cpu管理 , 内存管理, 终端管理, 磁盘管理, 文件管理, 网络管理, 电源管理, 多核管理


Collections.synchronizedList初次使用

 如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它就必须保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用Collections.synchronizedList方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问
 如:
 List<String> ips = Collections.synchronizedList(new ArrayList<>());

java多线程池的支持——ThreadPoolExecutor

java的线程池支持主要通过ThreadPoolExecutor来实现,我们使用的ExecutorService的各种线程池策略都是基于ThreadPoolExecutor实现的,所以ThreadPoolExecutor十分重要。要弄明白各种线程池策略,必须先弄明白ThreadPoolExecutor。