Java线程池中线程异常后:是销毁还是复用?


Java线程池中线程异常后:是销毁还是复用? excute提交: execute 提交到线程池的方式,如果执行中抛出异常,并且没有在执行逻辑中catch,那么会抛出异常,并且移除抛出异常的线程,创建新的线程放入到线程池中。 可以发现,如果抛出异常,会移除抛出异常的线程,创建新的线程。 submit提

并发设计模式


不变性(Immutability)模式 不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化。换句话说,就是变量一旦被赋值,就不允许修改了(没有写操作);没有修改操作,也就是保持了不变性。 将一个类所有的属性都设置成 final 的,并且只允许存在只读方法,那么这个类基本上就具备不可变性了。

并发工具类


如何优雅地终止线程池 shutdown() 方法是一种很保守的关闭线程池的方法。线程池执行 shutdown() 后,就会拒绝接收新的任务,但是会等待线程池中正在执行的任务和已经进入阻塞队列的任务都执行完之后才最终关闭线程池。 而 shutdownNow() 方法,相对就激进一些了,线程池执行 sh

并发理论


线程比进程效率高的原因:  早期的操作系统基于进程来调度 CPU,不同进程间是不共享内存空间的,所以进程要做任务切换就要切换内存映射地址,而一个进程创建的所有线程,都是共享一个内存空间的,所以线程做任务切换成本就很低了。  在一个时间片内,如果一个进程进行一个 IO 操作,例如读个文件,这个时候该进