树
定义
树(Tree)是元素的集合,每棵树由多个节点(node)组成,用以储存元素。某些节点之间存在着一定的关系,用连线表示,连线称为边(edge)或者链接。边的上端点成为父节点,下端称为子节点。
the most important thing is endurance.
栈和队列都是动态集合,可以理解为线性表或线性表实现的数据结构。它可以由数组实现,也可以由链表实现。
和数组链表等不一样的是,栈、队列添加、删除数据的位置都是预先设定的。在栈中,被删除的是最近被插入的元素,栈实现的是一种先进后出的策略。而队列中,被删去的总是在集合中存在时间最长的元素,队列实现的是一种先进先出的策略。
栈和队列是非常有用的数据结构,在计算机中很多的地方使用了栈、队列的思想。函数执行的压栈及出栈,消息队列的使用等等。本文最后将介绍栈和队列的常见使用场景,递归转化。
ExecutorService中有很多工具方法,在前面的文章中提过一些,这里将对剩余方法的功能进行介绍。
接口CompletionService的功能是以异步的方式一边生产新任务,一边处理已完成任务的结果,这样可以将执行任务与处理任务分离开来进行处理。使用submit()执行任务,使用take()取得已完成的任务,并按照完成这些任务的时间顺序处理它们。
在开发服务端软件项目时,经常需要处理时间很短而数目却非常巨大的请求,如果为每一个请求创建一个新的线程,会导致性能上的瓶颈,因为线程对象的创建和销毁需要JVM频繁的处理,如果执行时间很短,可能花在创建和销毁线程对象上的时间将大于真正执行任务的时间,若这样,系统性能将大大降低。
因此JDK5起提供了线程池的支持,主要作用则时支持高并发的访问处理,并且可以将线程对象进行复用。