1线程通信
1让多个线程之间可以互相影响,多个线程共用的空间
2我们可以控制线程的等待和唤醒,wait()notify()notifyAll()
3这几个方法都必须用在锁的范围内,只对同步代码块有用
4当有多个线程处于等待状态时,notify只能随机唤醒一个
5锁只能唤醒被自己等待的线程
2ThreadLocal
线程本地变量
可以存储一个值,线程是隔离的当前线程存放的值其他线程无法获取
底层源来:一个以线程唯一标识为Key的map集合
3互斥锁
synchronize的升级版本,提供更加丰富的方法
目前给我们的只体现:一个锁可以有多个Condition用来等待唤醒不同的线程
比synchronize功能更加丰富,但是相对的代码的复杂度也有所提升
4线程的状态
新建 线程的出生创建Thread对象
就绪 线程可以执行,但没有获取到Cpu的执行权
运行 线程正在运行状态
休眠 线程处于停止状态,可以自动醒来不会释放锁
等待状态 线程陷入永久的等待(也可以只等待一段时间)释放锁,需要外力才能唤醒
锁池状态 等待中的线程被唤醒就会进入锁池状态,此时具有获取锁的资格,在获取锁之前不能运行
消亡 线程运行完毕,结束程序
5线程池
在初始化的时候先创建一批线程存储起来,等使用的时候直接从容器中获取
优点使用时节约了创建线程的时间,(线程的创建时间远远大于一般的对象)
线程池有多种,每种线程池都有特点
6线程组
多个线程进行分组管理便于操作
7Runtime 和Timer
Runtime 帮助我们运行操作系统的底层命令
Timer 计时器和定时器