其他分享
首页 > 其他分享> > 多线程与高并发-part2

多线程与高并发-part2

作者:互联网

线程安全问题

  1. 主要是指多个线程对同一个对象的实例变量进行操作的时候,会出现值被更改,值不同步。
  2. 线程安全体现:
    1. 原子性
    2. 可见性
    3. 有序性

原子性

可见性

有序性

重排序

指令重排序

Java内存模型

JVM与计算机的关系

JVM抽象

线程同步

线程同步机制简介

  1. 线程同步机制是一套用于协调线程之间的数据访问的机制.该机制可以保障线程安全
  2. 同步机制包括:锁、volatile、final、static、以及相关的 API,如 Object.wait()/Object.notify()等

锁概述

  1. 锁可以理解为对共享数据进行保护的一个许可证,一个线程只有在持有许可证(锁)的情况才能对共享数据进行访问,一个锁只能被一个线程持有
  2. 一个线程在访问共享数据之前必须要先获得锁;获得锁的线程被称为锁的持有线程。
  3. 锁具有排他性,就是一个锁一次只能被一个线程只有,这种锁就陈伟排它锁或者互斥锁。
  4. JVM把锁分为内部锁和显示锁。内部锁通过synchronized实现;显示锁通过java.util.concurrent.locks.Lock 接口的实现类实现。

锁的作用

  1. 可以实现对共享数据的安全访问。保证线程的原子性、可见性、有序性
  2. 使用锁保证线程的安全性:
    1. 这些线程在访问共享数据的时候必须使用同一把锁
    2. 即使是读取共享数据的线程也需要使用同步锁。

标签:顺序,访问,并发,part2,同步,线程,处理器,共享,多线程
来源: https://www.cnblogs.com/yunge-thinking/p/15316148.html