java多线程

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原子操作-比较并交换

 

posted @ 2019-05-21 02:31  ^shun^  阅读(104)  评论(0)    收藏  举报