热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

浅谈Java线程并发知识点

本文主要对Java线程并发的知识点进行简单介绍。具有很好的参考价值,需要的朋友一起来看下吧

发布:一个对象是使它能够被当前范围之外的代码所引用:

常见形式:将对象的的引用存储到公共静态域;非私有方法中返回引用;发布内部类实例,包含引用。

逃逸:在对象尚未准备好时就将其发布。

不要让this引用在构造函数中逸出。例,在构造函数中启动线程,线程会包含对象的引用。

同步容器:对容器的所有状态进行穿行访问,Vector、Hashtable,Cllections.synchronizedMap|List

并发容器:ConcurrentHashMap,CopyOnWriteArrayList,ConcurrentLinkedQueue、BlockingQueue

list 随机访问特性的优势。

Blocking 增加了可阻塞的get set操作

ConcurrentHashMap:分离锁,为并发访问带来的高的吞吐量,同时几乎没有损失单个线程的访问性能。返回弱一致性的迭代器。

迭代器的弱一致性,在迭代器生成以后会检测容器的修改变化。

并发容器 size(), isEmpty() 弱化,返回近似结果。

CopyOnWriteArrayList:每次修改容器时复制,适用迭代需求大于修改需求情况。

生产者消费者模式,运用有界阻塞队列解耦生产者和消费者的代码。

Executor任务执行框架,实现了生产者消费者模式。

SynchronousQueue:put等待消费者可用,take等待生产者可用,适用于消费者充足的情景。

双端队列(deque)关联于窃取工作模式(work stealing),区别于生产者消费者模式中所有消费者共享一个工作队列,工作窃取模式每一个消费者都有自己的双端队列,如果一个消费者完成自己的全部工作,就可以偷取其它消费者队列队尾的任务。

工作窃取模式适用于当运行到一个任务的某一个单元时,可能会识别出更多的任务,如遍历文件。

当一个方法能够抛出InterruptedException时,说明它是可阻塞方法。抛出或捕获InterruptedException。

Synchronizer:同步者---semaphore、barrier、latch,封装状态,决定线程在此状态下的行为(通过或阻塞),提供操控状态的方法,高效的等待同步者进入期望的状态。

latch闭锁:延迟线程进度直到线程到达一个终点状态,像一个一次性开关。可以用来确保特定活动直到其它活动完成才发生。

例如:

  • 确保一个计算不会被执行,直到需要的资源都被初始化。
  • 确保一个服务不会被开始,直到依赖的其它服务已经开始。
  • 等待,直到活动的所有部分都为继续处理做好准备。

FutureTask可以作为闭锁,抽象的可携带结果的计算,通过callable实现。Future.get依赖于任务的执行状态,任务运行完成则返回结果,否则一直等待,

Executor框架利用FutureTask完成异步任务。

semapher信号量:用来控制能够同时访问某特定资源的活动数量或同时执行某一给定操作的数量,资源池,容器边界。

barrier关卡:类似于闭锁,区别所有的线程必须同时到达关卡,才能继续处理,闭锁等待的是时间,关卡等待的是其它线程,重复使用。通过关卡,await会为每一个线程返回唯一的到达索引号,可以用它来选举产生一个领导,在下一次迭代中承担一些特殊任务。

Exchanger一种关卡的形式。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


推荐阅读
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 本文详细介绍了W3C标准盒模型和IE传统盒模型的区别,探讨了CSS3中box-sizing属性的使用方法及其在布局中的重要性。通过实例分析,帮助读者更好地理解和应用这一关键概念。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
author-avatar
琼小海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有