美文网首页
6、多线程3要素&如何实现线程安全

6、多线程3要素&如何实现线程安全

作者: lois想当大佬 | 来源:发表于2020-04-30 10:00 被阅读0次

一、多线程3要素
原子性(Synchronized, Lock):简单说就是相关操作不会中途被其他线程干扰,一般通过同步机制实现。

可见性(Volatile,Synchronized, Lock):是一个线程修改了某个共享变量,其状态能够立即被其他线程知晓,通常被解释为将线程本地状态反映到主内存上,volatile 就是负责保证可见性的。

有序性(Volatile,Synchronized,Lock):是保证线程内串行语义,避免指令重排等。

二、线程安全
保证线程安全可从多线程3要素出发:

- 原子性(Atomicity):单个或多个操作是要么全部执行,要么都不执行

    - Lock:保证同时只有一个线程能拿到锁,并执行申请锁和释放锁的代码

    - synchronized:对线程加独占锁,被它修饰的方法/代码块只允许一个线程访问

- 可见性(Visibility):当一个线程修改了共享变量的值,其他线程能够立即得知这个修改

    - volatile:直接操作主存;

    - synchronized:在释放锁之前会将工作内存新值更新到主存中

- 有序性(Ordering):程序代码按照指令顺序执行

    - volatile: 本身就包含了禁止指令重排序的语义

    - synchronized:保证一个变量在同一个时刻只允许一条线程对其进行加锁操作,使得持有同一个锁的两个同步块只能串行地进入

四、synchronized
synchronized实现原理

五、volatile
volatile实现原理

相关文章

  • 6、多线程3要素&如何实现线程安全

    一、多线程3要素原子性(Synchronized, Lock):简单说就是相关操作不会中途被其他线程干扰,一般通过...

  • 多线程学习笔记

    多线程出现目的 如何使用多线程 线程状态(6种) 线程开启/停止 线程安全VolilateSychronized机...

  • OC语法_多线程

    1. 多线程实现原理; 2. 多线程实现的方案; 3. 线程同步技术; 1. 多线程实现原理; - 进程:...

  • 工作3年的Java程序员,轻松拿到阿里P6Offer,只因为他搞

    Redis中的多路复用模型 Redis6用到了多线程?那多线程应用在哪些地方,引入多线程后,又改如何保证线程安全性...

  • iOS 多线程- pThread和NSThread

    本文内容:多线程的优缺点多线程实现技术方案如何使用pThread实现多线程如何使用NSthread执行任务、设置优...

  • Java-多线程(一)

    NO.1 多线程简介 NO.2 多线程实现方式(一) NO.3 多线程实现方式(二) NO.4 匿名内部类实现线程...

  • 线程安全知多少

    1. 如何定义线程安全 线程安全,拆开来看: 线程:指多线程的应用场景下。 安全:指数据安全。 多线程就不用过多介...

  • Java多线程1

    创建多线程的3种方式 1、继承Thread类实现多线程 2、实现Runnable接口方式实现多线程 定时器 线程的...

  • 【iOS开发】--多线程(持续更新)

    文章目录: 一: iOS中多线程的实现方案phreadNSThreadGCDNSOpration 二:多线程的安全...

  • JAVA面试问题集(更新中)

    什么是线程安全线程安全代码 多线程的实现方式继承Thread类实现Runnable接口实现Callback接口 什...

网友评论

      本文标题:6、多线程3要素&如何实现线程安全

      本文链接:https://www.haomeiwen.com/subject/synawhtx.html