栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JUC 重点总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JUC 重点总结

未完更新中。。。

目录
  • WWH???
  • JUC概述
    • 1.进程与线程
    • 2.并发与并行
    • 3.线程的6种状态
    • 4.管程
    • 5.用户线程和守护线程
  • Lock 接口
    • 1.Synchronized 关键字
    • 2.Lock 接口
    • 3.Lock 和 synchronized 的不同
  • 线程间通信
  • 线程间定制化通信
  • 集合的线程安全
  • 多线程锁
  • Callable 接口
  • JUC 三大辅助类
  • ReentrantReadWriteLock读写锁
  • BlockingQueue阻塞队列
  • ThreadPool 线程池
  • Fork/Join 分支合并框架
  • CompletableFuture 异步回调

WWH???

JUC是什么?
为什么要用?
学了会怎么样?

JUC概述
  • JUC就是java.util.concurrent工具包的简称。
1.进程与线程

进程

指在系统中正在运行的一个应用程序;
程序一旦运行就是进程;

进程——资源分配的最小单位。
线程

系统分配处理器时间资源的基本单元,
或者说进程之内独立执行的一个单元执行流。

线程——程序执行的最小单位。

2.并发与并行

并发

同一时刻多个线程在访问同一个资源,多个线程对一个点。
例子:春运抢票、电商秒杀

并行

多项工作一起执行,之后再汇总
例子:泡方便面,电水壶烧水,一边撕调料倒入桶中
3.线程的6种状态

线程状态枚举类
Thread.State

新建:NEW
准备就绪:RUNNABLE
阻塞:BLOCKED
不见不散:WAITING
过时不侯:TIMED_WAITING
终结:TERMINATED

wait/sleep的区别

* sleep是Thread的静态方法, wait是Object的方法,任何对象实例都能调用。
* sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)。
* 它们都可以被interrupted方法中断。
4.管程

Monitor监视器

* 操作系统中称为监视器,Java中称为锁
* 一种同步机制,保证同一个时间,只有一个线程访问被保护数据或者代码
* jvm同步基于进入和退出的操作,使用管程对象实现的
5.用户线程和守护线程

用户线程

平时用到的普通线程,自定义线程

守护线程

运行在后台,是一种特殊的线程,比如垃圾回收

深入了解 JUC概述 链接

Lock 接口 1.Synchronized 关键字

synchronized 是 Java 中的关键字,是一种同步锁。
它修饰的对象有以下几种:

1.修饰一个代码块,被修饰的代码块称为同步语句块。
   作用的范围:大括号{} 括起来的代码
   作用的对象:调用这个代码块的对象
2.修饰一个方法,被修饰的方法称为同步方法。
   作用的范围:整个方法
   作用的对象:调用这个方法的对象
3.修饰一个静态的方法。
   作用的范围:整个静态方法
   作用的对象:这个类的所有对象
4.修饰一个类。
   作用的范围:synchronized后面括号括起来的部分
   作用的对象:这个类的所有对象
2.Lock 接口

Lock 锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作。

  • ReentrantLock 可重入锁,是唯一实现了 Lock 接口的类
  • ReadWriteLock 只定义了两个方法。
    • Lock readLock(); //获取读锁
    • Lock writeLock(); //获取写锁
  • ReentrantReadWriteLock 实现了 ReadWriteLock 接口
    • 最主要的有两个方法:readLock()和 writeLock()用来获取读锁和写锁
3.Lock 和 synchronized 的不同
  1. Lock是一个接口,而synchronized是Java中的关键字,synchronized是内 置的语言实现;
  2. synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而 Lock 在发生异常时,如果没有主动通过 unLock()去释放锁,则很可能造成死锁现象,因此使用 Lock 时需要在 finally 块中释放锁;
  3. Lock可以让等待锁的线程响应中断,而synchronized却不行,使用 synchronized 时,等待的线程会一直等待下去,不能够响应中断;
  4. 通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
  5. Lock可以提高多个线程进行读操作的效率。
    在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时, Lock 的性能要远远优于 synchronized。

深入了解 Lock接口 链接

线程间通信

线程间通信的模型有两种:共享内存和消息传递,
线程间通信案例Demo 链接

线程间定制化通信 集合的线程安全 多线程锁 Callable 接口 JUC 三大辅助类
CountDownLatch 
CyclicBarrier 
Semaphore

深入了解 JUC三大辅助类 链接

ReentrantReadWriteLock读写锁 BlockingQueue阻塞队列 ThreadPool 线程池 Fork/Join 分支合并框架 CompletableFuture 异步回调
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号