java多线程

本文围绕Java线程展开,介绍了创建线程的方式,如继承Thread、实现Runnable和Callable。阐述了线程的并发、状态、优先级、分类等概念,还提及线程同步、并发容器、死锁等问题。此外,介绍了生产者消费者模式的解决方案,以及定时任务调度、指令重排等内容。

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

 

转载于:https://www.cnblogs.com/hsy126/p/10897645.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值