首页
关于
留言
归档
动态
友链
推荐
虫洞
开往
憶夣
累计撰写
57
篇文章
累计创建
11
个标签
累计收到
2
条评论
栏目
首页
关于
留言
归档
动态
友链
推荐
虫洞
开往
目 录
CONTENT
Java并发编程实战-憶夣
以下是
Java并发编程实战
相关的文章
2023-04-04
3、活跃性、性能与测试
第三部分 活跃性、性能与测试第十章 避免活跃性危险10.1 死锁每个人都拥有其他人需要的资源,同时又等待其他人已经拥有的资源,并且每个人在获得所有需要的资源之前都不会放弃已经拥有的资源。当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么它们将永远被阻塞。在线程A 持有锁L 并想获得锁M
2023-04-04
52
0
0
Java
2023-04-04
2、结构化并发应用程序
第二部分 结构化并发应用程序第六章 任务执行6.1 在线程中执行任务当围绕“任务执行”来设计应用程序结构时,第一步就是要找出清晰的任务边界。在理想情况下,各个任务之间是相互独立的:任务并不依赖于其他任务的状态、结果或边界效应。独立性有助于实现并发,因为如果存在足够多的处理资源,那么这些独立的任务都可
2023-04-04
60
0
0
Java
2023-04-04
1、基础知识
本文摘自Java并发编程经典书籍,系统介绍了并发编程的基础知识,涵盖线程概念、安全性、对象共享与组合以及常用构建模块。 **第一章**阐述了线程的起源、优势(充分利用多处理器、简化建模、异步事件处理、提升UI响应)以及带来的风险(安全性问题如竞态条件、活跃性问题如死锁、性能开销如上下文切换)。指出线程在现代Java应用中无处不在,如Timer、Servlet、RMI、Swing等框架均依赖线程。 **第二章**聚焦线程安全性,定义了线程安全类:在多线程访问下无需额外同步仍能正确行为。介绍了原子性、竞态条件(如"先检查后执行")、复合操作等概念,详细说明了Java内置锁(synchronized)的互斥语义和可重入特性,强调加锁是保护共享状态的关键手段,同时需在安全性与性能间取得平衡。 **第三章**讨论对象的共享,重点讲述可见性问题。缺少同步时线程可能读取失效数据,非volatile的64位变量甚至可能读到不一致值。加锁不仅保证互斥,还确保可见性;volatile变量提供轻量级可见性保证但不保证原子性。文章还介绍了对象发布与逸出风险、线程封闭技术(Ad-hoc封闭、栈封闭、ThreadLocal)、不可变对象的线程安全特性,以及安全发布的常用模式(静态初始化、volatile/final域、锁保护、线程安全容器)。不同可变性对象有不同的发布要求。 **第四章**讲解对象组合的线程安全性设计方法。通过封装来简化线程安全分析,实例封闭(如Java监视器模式)利用对象内置锁保护内部状态。线程安全性可委托给底层线程安全组件(如ConcurrentHashMap),但若存在跨变量的不变性条件,则需额外加锁。为已有线程安全类添加功能时,优先采用组合而非继承或客户端加锁。同步策略应文档化以辅助维护。 **第五章**介绍Java并发基础构建模块。同步容器(如Vector)存在复合操作和迭代问题;并发容器(如ConcurrentHashMap、CopyOnWriteArrayList)通过分段锁和写时复制提升并发性能。阻塞队列支持生产者-消费者模式和工作密取模式。同步工具类包括闭锁(CountDownLatch)、FutureTask、信号量(Semaphore)和栅栏(CyclicBarrier),用于协调线程执行时序。中断是一种协作机制,处理InterruptedException时应传递或恢复中断状态。最后通过逐步优化Memoizer缓存示例,展示了如何利用ConcurrentHashMap和FutureTask构建高效且可伸缩的结果缓存。 **总结**列出了并发编程的核心原则:减少可变状态、多用final和不可变对象、封装状态与同步机制、用锁保护可变变量、统一锁以维护不变性条件、复合操作期间持有锁、绝不省略同步、将同步策略文档化。
2023-04-04
87
0
0
Java