什么叫线程同步_什么叫线程同步器

什么叫线程同步_什么叫线程同步器Java同步器简述一、概述在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题:线程之间内存共享,需要通过加锁进

Java同步器简述
  一、概述

  在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题:

线程之间内存共享,需要通过加锁进行控制,但是加锁会导致性能下降,同时复杂的加锁机制也会增加编程编码难度
过多线程造成线程之间的上下文切换,导致效率低下

  因此,在并发编程领域中,一直有一个很重要的设计原则:“不要通过内存共享来实现通信,而应该通过通信来实现内存共享。”

  简单来说,就是尽可能通过消息通信,而不是内存共享来实现进程或者线程之间的同步。

并发():在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。
并行():当系统有一个以上时,当一个执行一个进程时,另一个可以执行另一个进程,两个进程互不抢占资源,可以同时进行。
信号量():是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用,也是作系统用来解决并发中的互斥和同步问题的一种方法。
信号量机制():用来解决同步/互斥的问题的,它是1965年,荷兰学者Dijkstra提出了一种卓有成效的实现进程互斥与同步的方法。
管程():一般是指管理共享变量以及对共享变量的操作过程,让它们支持并发的一种机制。
互斥():一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。即就是同一时刻只允许一个线程访问共享资源的问题。
同步():两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。即就是线程之间如何通信、协作的问题。
对象池():指的是一次性创建出个对象,之后所有的线程重复利用这个对象,当然对象在被释放前,也是不允许其他线程使用的,一般指保存实例对象的容器。

  二、线程同步机制

  2.1 多线程同步器

  同步器
简述

volatile

synchronized

  2.2 线程阻塞工具类

  同步器
简述

LockSupport
中控制线程的实现类,是并发基础组件中的基础组件。

  2.3 线程锁

  同步器
简述

AQS
同步器基类

ReentrantLock

Condition
条件锁

ReentrantReadWriteLock
读写锁

StampedLock
邮戳锁

  三、线程辅助类

  辅助类
简述

Semaphore
信号灯

CountDownLatch
减计数器

CyclicBarrier
加法计数器

Exchanger
交换器

Phaser
阶段

  四、总结

  三种等待唤醒机制:

搭配的、
的和方法
的和

  类和提供的阻塞唤醒机制十分相似,体现在:

要求阻塞和唤醒是有序的:它们都只能先阻塞再唤醒。否则会抛异常,且被阻塞的线程不能被唤醒。
依赖加锁或同步代码块:调用的等待唤醒方法时要搭配一起用。即的和要写在同步代码块内;调用的和方法时要搭配,一起用。否则也会抛异常,且被阻塞的线程不能被唤醒。

  类与前两者不同:

  类支持先唤醒后阻塞,不会抛异常(底层是通过通行证实现的)。

  类不依赖加锁代码块,直接,调用即可,较方便。

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/93109.html

(0)
上一篇 2024年 5月 29日
下一篇 2024年 5月 29日

相关推荐

  • IDEA激活2024.1.2(JetBrains 全家桶 2024 首个大版本更新(正版激活))

    IDEA激活2024.1.2(JetBrains 全家桶 2024 首个大版本更新(正版激活))

    激活谷笔记 2024年 6月 6日
  • 系统可用性指标包括哪些方面

    系统可用性指标包括哪些方面一、功能性指标1、功能的正确性:系统功能和用户的实际需求、已定义的产品规范一致。2、功能的准确性:系统产生的结果在精度允许的误差范围内。3、功能的完整性:所有功能及其定义清楚、可用。4、功能的易用性:衡量用户在使用系统时的满意度和便捷程度的指标。二、可用性指标1、可操作性:容易使用和

    激活谷笔记 2024年 5月 20日
  • matlab fft频谱图_matlab fft频谱图 两个信号的幅值差

    matlab fft频谱图_matlab fft频谱图 两个信号的幅值差为什么FFT变换后的幅值感觉不对? 请看一下问题出在哪里(matlab环境)。原始信号的幅值最大值都在40+ 50+ 为什么经过fft之后的幅值却只有9.9 我已把fft的结果通过*2/nfft 得到真正的幅值. 这是我的代码 感觉应该没错,但这结果很难想明白, 感觉fft后的

    2024年 5月 22日
  • substance怎么保存做好的文件_substance怎么保存低版本

    substance怎么保存做好的文件_substance怎么保存低版本最全Substance Designer入门操作笔记前言老标题党了嘻嘻… 先说一些废话,不需要的可以直接跳过。这一篇实际上的作用对于老司机属于是巩固软件操作,对于新司机来说是减轻对陌生工作环境的恐惧感,毕竟打开一个新软件看

    2024年 5月 20日
  • hot和hotter的区别_hot和heated的区别 discussion

    hot和hotter的区别_hot和heated的区别 discussionheat是什么意思_heat用英语怎么说_heat的翻译_heat翻译成_heat的中文意思_heat怎么读,heat的读音,heat的用法,heat的例句全部四级六级高考But this and other price shocks were event-driven—drought in t

    激活谷笔记 2024年 5月 22日
  • matlab移位数组相加_matlab 数组移位

    matlab移位数组相加_matlab 数组移位matlab数组内各数相加在MATLAB中,可以使用 sum [[函数](https://geek.csdn.net/educolumn/2319d2a62911adc34b96ea572d8225a2?spm=1055

    激活谷笔记 2024年 5月 26日
  • vue3生命周期和vue2区别_vue生命周期的四个阶段

    vue3生命周期和vue2区别_vue生命周期的四个阶段vue2和vue3生命周期的区别<template> <div> <h2>{{title}}</h2> <ul> <h3>{{

    激活谷笔记 2024年 5月 12日
  • ubuntu20.04安装教程分区_ubuntu18.04安装教程

    ubuntu20.04安装教程分区_ubuntu18.04安装教程UBUNTU20.04 安装显卡驱动_ubuntu18.04安装教程仙海寻波原文:https://www.cnblogs.com/wwzone/articles/13662946.html第一步 下载 Qt5.12.9安装包使用清

    2024年 5月 13日
  • uniapp开发小程序的缺点_uniapp和原生小程序混合开发

    uniapp开发小程序的缺点_uniapp和原生小程序混合开发uniapp与小程序混合开发现有一个比较大的小程序应用,想要把新功能利用uni-app来开发需要怎么去实现,是否可行?有哪些优缺点?uni官方给出的解决方案方式1:把原生小程序转换为uni-app源码。有各种转换工具,详见方式2:新建一个uni-app项目,把

    2024年 5月 12日
  • 劲客一公里油耗几毛钱_劲客一公里油耗几毛钱正常吗

    劲客一公里油耗几毛钱_劲客一公里油耗几毛钱正常吗日产劲客油耗多少钱一公里?尼桑劲客真实油耗测试日产劲客油耗多少钱一公里?尼桑劲客真实油耗测试日产劲客工信部油耗2020款和2019款、1.5L手动版劲客工信部综合工况油耗7.7L。2020款和2019

    2024年 5月 24日
  • 医学ibs是什么意思_医学ibs是什么意思的缩写

    医学ibs是什么意思_医学ibs是什么意思的缩写【医学英语】人体各大系统的常见英文缩写大全人体各大系统的常见英文缩写以下是人体各大系统的常见英文缩写:- CNS: Central Nervous System (中枢神经系统)- PNS: Peripheral Nervous System (外周神经系统)- CVS: C

    激活谷笔记 2024年 5月 26日
  • 分区表正被其他程序独占_分区表正被其他程序独占访问,本程序修改它失败

    分区表正被其他程序独占_分区表正被其他程序独占访问,本程序修改它失败解决数据库被其他程序访问,无法独占访问权问题这个错误提示表明无法启动应用程序,可能是由于工作信息文件丢失或被其他用户以独占方式打开导致的。为了解决这个问题,你可以尝试以下几个步骤:1. 检查工作信息文件是否存在:确认应用程序需要的工作信息文件是否存在,并且没有被删除或

    激活谷笔记 2024年 5月 21日
关注微信