- 线程通讯: 一个线程完成了自己的任务时,要通知另外一个线程去完成另外一个任务.
wait(): 等待 如果线程执行了wait方法,那么该线程会进入等待的状态,等待状态下的线程必须要被其他线程调用notify方法才能唤醒。
notify(): 唤醒 唤醒线程池等待线程其中的一个。
notifyAll() : 唤醒线程池所有等待 线程。
wait与notify方法要注意的事项:
1. wait方法与notify方法是属于Object对象 的。
2. wait方法与notify方法必须要在同步代码块或者是同步函数中才能 使用。
3. wait方法与notify方法必需要由锁对象调用。
- 线程的停止:
- 停止一个线程 我们一般都会通过一个变量去控制的。
- 如果需要停止一个处于等待状态下的线程,那么我们需要通过变量配合notify方法或者interrupt()来使用。
interrupt:把线程的等待状态强制清除,被清除状态的线程会接收到一个InterruptedException。
- 守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡。
setDaemon() 设置线程是否为守护线程,true为守护线程, false为非守护线程。
d.isDaemon()判断线程是否为守护线程。
- join()加入。 一个线程如果执行join语句,那么就有新的线程加入,执行该语句的线程必须要让步给新加入的线程先完成任务,然后才能继续执行。
集合:集合是存储对象数据的集合容器。
集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
-------| Collection 单例集合的跟接口。
----------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
----------| Set 如果是实现了Set接口的集合类,具备特点: 无序,不可重复。
Collection接口中的方法:
增加
add(E e) 添加成功返回true,添加 失败返回false.
addAll(Collection c) 把一个集合 的元素添加到另外一个集合中去。
删除
clear()
remove(Object o)
removeAll(Collection c)
retainAll(Collection c)
查看
size()
判断
isEmpty()
contains(Object o)
containsAll(Collection<?> c)
迭代
toArray()
iterator()
迭代器的方法:
hasNext() 问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。
next() 获取元素…
remove() 移除迭代器最后一次返回 的元素。
- 注意: Object类型的数组可以存储任意类型的数据。