`
milagro
  • 浏览: 13526 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java并发编程总结

阅读更多
  • Executors
    •这是一种任务分解。任务提供者和执行者
    •在本线程内完成,或者交给专门的Executor去执行。
  • BlockingQueue
    •常用的工具类,用于数据流分解
    •读取阻塞,插入阻塞(可选)
    •ArrayBlockingQueue
    –FIFO,有上限
    •LinkedBlockingQueue
    –FIFO,可能有上限
    •PriorityBlockingQueue
    –按优先次序,无上限
    •SynchronousQueue
    –Rendezvous channel
  • Future任务提供者和执行者之间的一种通讯机制
    •等到任务执行结束(或者等待一段时间)
    •取消任务
    •等待时执行错误通知
    •获取执行结果
    •这种机制成为Future,这是一个很关键的概念,在并发程序中使用,能使程序清晰化,而且功能完备。在各种并发的库中均有提供类似的概念。Futue也用于异步变同步的场景。
    Future已经是一个很流行的线程间通讯工具类,在很多网络并发的库中均有使用
  • DelayQueue用于以下场景
    •关闭空闲连接
    •清空缓存中的Item
    •任务超时处理
    •替代笨笨的后台线程定时挨个检查的方式
    •DelayQueue是一个使用优先队列(PriorityQueue)实现的BlockingQueue,优先队列的比较基准值是时间。
  • 如果深入 JVM 和操作系统,会发现非阻塞算法无处不在。垃圾收集器使用非阻塞算法加快并发和平行的垃圾搜集;调度器使用非阻塞算法有效地调度线程和进程,实现内在锁。
  • Exchanger
    •结合数据分解和数据流分解的一种技巧
    •可以在两个线程之间交换数据,只能是2个线程,不支持更多的线程之间互换数据
  • synchronized
    •使用简单
    •性能低下。比使用ReentrantLock性能要低得多
    •调试监控不方便,无法得知“锁”拥有者线程
  • Lock
    •更加灵活,性能更好
    •支持多个Condition
    •可以不以代码块的方式上锁
    •可以使用tryLock,并指定等待上锁的超时时间
    •调试时可以看到内部的owner thread,方便排除死锁
  • RenntrantLock
    •一个可重入的互斥锁定 Lock,它具有与使用synchronized所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大
    •支持fair和unfair两种模式•更加灵活,性能更好
  • ReadWriteLock允许多个读,一个写
  • Semaphore, CountDownLatch, CyclicBarrier这些工具类都很简单,属于并发流程控制的典型手段
  • Atomic
    •基于CPU硬件提供的TSL指令
    •基本思想是compare and set(CAS)作为原子操作
    •通常和一个忙等待结合使用,CAS操作时需要一个回退机制
    •非阻塞算法的基础
    •Lock-free数据结构以此作为基础,获得更好的并发性能。
  • Lock-free数据结构
    •提供compare and set操作
    •使用者不需要锁
    •并发性能更好
    •在并发情况下,更容易使用,不容易出错
分享到:
评论

相关推荐

    Java并发编程技术总结

    Java并发编程技术总结,所含内容有并发特性、并发锁、线程池、并发场景解决方案等,对于性能思考和内容参考资料有一定说明

    Java并发编程总结!!!

    Java并发编程总结!!!

    java并发编程总结

    讲java并发编程做了一个整理,可以帮助理清一些概念,帮助理解

    java并发编程实战源码,java并发编程实战pdf,Java

    《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...

    Java 并发编程实战.pdf

    《Java并发编程实战》这本书是关于Java语言中并发编程技术的经典著作。它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程...

    《java 并发编程实战高清PDF版》

    《Java并发编程实战》是一本深入探讨Java平台并发编程的权威指南。这本书旨在帮助开发者理解和掌握在Java环境中创建高效、可扩展且可靠的多线程应用程序的关键技术和实践。它涵盖了从基本概念到高级主题的广泛内容,...

    java并发编程2

    Java并发编程是Java开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。以下是对标题和描述中所提及的几个知识点的详细解释: 1. **线程与并发** - **线程*...

    JAVA并发编程艺术 高清pdf

    JAVA并发编程艺术 高清pdf : 1.并发变成的挑战 2. java并发机制的底层实现原理 3. java 内存模型 4. java并发编程基础 5.java中的锁。。。。。。。

    java并发编程实战中文加英文版加源码

    JAVA并发编程实践中文版 英文版 原书源码 带书签 java_concurrency_in_practice.pdf 英文版还是不错的,但是中文版的译者典型的没有技术功底,介绍上说什么专家, 翻译的非常差劲,有些句子都不通顺,都不知道自己去...

    Java并发编程实战华章专业开发者书库 (Tim Peierls 等 美Brian Goetz).pdf

    《Java并发编程实战》是一本深入探讨Java平台并发编程的权威指南,由Tim Peierls等人与Brian Goetz合著,旨在帮助Java开发者理解和掌握在多线程环境中编写高效、安全的代码。这本书由拥有丰富经验的JDK并发大师及...

    java并发编程内部分享PPT

    Java并发编程是Java开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。这份“java并发编程内部分享PPT”显然是一个深入探讨这一主题的资料,旨在帮助开发者...

    java并发编程实战(英文版)

    ### Java并发编程实战知识点概述 #### 一、Java并发特性详解 在《Java并发编程实战》这本书中,作者深入浅出地介绍了Java 5.0和Java 6中新增的并发特性。这些特性旨在帮助开发者更高效、安全地编写多线程程序。书中...

    java 并发编程的艺术pdf清晰完整版 源码

    《Java并发编程的艺术》这本书是Java开发者深入理解并发编程的重要参考书籍。这本书全面地介绍了Java平台上的并发和多线程编程技术,旨在帮助开发者解决在实际工作中遇到的并发问题,提高程序的性能和可伸缩性。 ...

    java并发编程书籍

    Java并发编程是软件开发中的一个关键领域,尤其是在大型企业级应用和分布式系统中。通过学习相关的书籍,开发者可以深入理解如何有效地设计和实现高效的多线程应用程序,避免并发问题,如竞态条件、死锁、活锁等。...

    Java并发编程实践高清pdf及源码

    《Java并发编程实践》是一本深入探讨Java多线程编程的经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和David Holmes等专家共同编写。这本书全面介绍了Java平台上的并发编程技术,是Java开发...

    java并发编程实践pdf笔记

    Java并发编程实践是Java开发中不可或缺的一个领域,它涉及到如何高效、正确地处理多线程环境中的任务。这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的...

    JAVA并发编程艺术pdf版

    《JAVA并发编程艺术》是Java开发者深入理解和掌握并发编程的一本重要著作,它涵盖了Java并发领域的核心概念和技术。这本书详细阐述了如何在多线程环境下有效地编写高效、可靠的代码,对于提升Java程序员的技能水平...

    JAVA并发编程实践.pdf+高清版+目录 书籍源码

    《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了Java并发的核心概念、工具和最佳实践,旨在帮助读者在多线程环境下编写高效、安全的代码。 并发编程是现代软件开发中的关键技能,...

    Java并发编程从入门到精通(pdf)(附源码)

    《Java并发编程从入门到精通》是一本专为Java开发者设计的深度学习并发编程的书籍。作者韩剑锋,凭借其12年的IT行业经验,曾担任多家IT公司的研发总监和技术总监,以其丰富的实战经验和深厚的理论知识,为读者提供了...

Global site tag (gtag.js) - Google Analytics