1、继承Thread
2、实现Runnable,通过Thread代理类启动--->静态代理
3、实现Callable
多个线程抢占一个资源-->并发
lambda简化简单线程类:外部类-->内部类-->方法内部类-->匿名内部类==》jdk1.8 lambda简化
线程5种状态:新生、就绪、运行(start)、阻塞(sleep、wait)、死亡。
线程优先级:1到10之间
线程分类:用户线程,守护线程;虚拟机需要等待所有用户线程执行完毕。
线程同步:工作内存和主存,从主存copy到线程工作内存
synchronized同步方法、synchronized同步块
并发容器:CopyOnWriteArrayList
死锁
线程并发协作--生产者消费者模式-->解决方案:1、管程法;2、信号灯法
java.lang.Object类中提供wait、notify、notifyAll方法解决线程通信问题,这些方法都只能在同步方法或同步代码块中使用;
管程法:
生产者--->缓冲区(容器)--->消费者
信号灯:
定时任务调度:
一、
java.util.Timer:实现的一个线程
java.util.TimerTask:实现了runnable接口
二、
quartz框架
happenBefore指令重排
volatile保证线程同步(变量的可见性),但不能保证原子性
dcl单例模式
ThreadLocal
可重入锁
cas原子操作-比较并交换