为了记忆线程在6种状态,编了个小故事,看图:
从前有一个战斗民族,刚出生(新建状态)就要去斗技场(堆)斗牛(运行状态),如果有人在斗牛,就备战(阻塞状态),随时准备冲进去(抢占)。过了一会儿,台上的弱鸡被顶死了(死亡状态),我抢到了进场资格,开始斗牛。但是牛太厉害,我受伤了,下场休息(计时等待)。别人继续抢进场资格。 过了一会儿,休息好了,台上的弱鸡被顶成植物人了(无限等待)。身为战斗民族,就算被打成植物人,只要有人叫(noity())一声就会苏醒,然后继续战斗。 ==================================================================
数据结构 分为5种 第一种:栈结构 特点:
- 先进后出(如同子弹先压子弹1,2,3,射击3,2,1);
第二种:队列结构 特点:
- 先进先出(如同排队安检,1,2,3检查一个过一个1,2,3);
第三种:数组结构 特点:
- - 查询快:数组是一个连续的内存空间。而且有索引编号。通过索引快速找到对应的元素!
- - 增删慢:增加或删除元素时,都会创建新数组,然后将元素复制到新数组中
第四种:链表结构 特点:
- - 查询慢:链表不是一个连续空间。从前向后一个一个的去查找。
- - 增删快:链表中元素记录的是每一个元素的内存地址值。想添加或删除一个元素时,只需要将对应的地址值更改一下即可。不会影响其他的元素!
- - 单向链表:当前元素会记录下一个元素的地址值
- - 双向链表:当前元素会记录下一个元素的地址值,同时下一个元素也会记录上一个元素的地址值
第五种:红黑树结构 特点:
|