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

多线程笔记一

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

多线程笔记一

多线程的学习笔记
  • 进程和线程
    • 进程
    • 线程
    • 线程的生命周期
    • Java中对线程安全的处理
      • synchronized
        • 定义
        • 锁升级
        • 锁标记
    • volatile
      • 定义
      • JMM内存模型
      • 指令重排序
      • 内存屏障
    • lock锁
      • 定义
      • 实现原理
    • 线程的通讯
      • 方法
      • 原理
    • juc中的队列
      • SynchronousQueue 无限队列
      • linkedTransferQueue 无界阻塞队列.
      • linkedBlockingQueue 一个正常的基于链表结构的阻塞队列, 无界队列
      • linkedBlockingDeque 双向链表组成的队列.
    • J.U.C 并发工具
      • CountDownLatch
      • Semaphore 线程的限流
      • CyclicBarrier

进程和线程 进程

cpu执行最小单元

线程

cpu调度的最小单元

线程的生命周期

创建 ---->就绪—>运行—.> 结束 还有阻塞

Java中对线程安全的处理 synchronized 定义

是jdk提供的一种锁用来解决线程的有序性,原子性,可见性的一种策略。是一个悲观锁,是可重入锁。只能是非公平锁。

锁升级

无锁状态,偏向锁,轻量级锁,重量级锁。

锁标记

是通过在对象头中标记来表示锁的状态。

volatile 定义

也是jdk提供的,是解决可见线,有序性。

JMM内存模型

线程都会从主存中获取数据,在线程中处理完成之后,然后把数据写到缓存中。

指令重排序

cpu层面的优化,把指令进行重排序,但是这样的在多线程的环境下就会产生线程安全的隐患。

内存屏障

防止指令之间的重排序
保证数据的可见性

lock锁 定义

是juc下的一种锁机制。可支持重入锁,可以是公平锁也可以公平锁。

实现原理

如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用队列锁实现的,即将暂时获取不到锁的线程加入到队列中。

公平和非公平的区别就是公平锁会判断当前下一个节点,非公平锁不会。

线程的通讯 方法
		thread.wait();
		thread.notify();
		thread.notifyAll();
// 方式二
        ReentrantLock reentrantLock = new ReentrantLock();
        Condition condition = reentrantLock.newCondition();
        condition.await();
        condition.signal();
        condition.signalAll();
原理

juc中的队列 SynchronousQueue 无限队列 linkedTransferQueue 无界阻塞队列. linkedBlockingQueue 一个正常的基于链表结构的阻塞队列, 无界队列 linkedBlockingDeque 双向链表组成的队列.

.

J.U.C 并发工具 CountDownLatch Semaphore 线程的限流

acquire() 抢占一个令牌
release() 释放一个令牌

CyclicBarrier
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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