同步块未覆盖到所有场景。
import java.util.HashMap; import java.util.Map; public class CacheManage { private Map<String, String> cache = new HashMap<String, String>(); public static int THREADS_COUNT = 2; public void fresh() { synchronized (cache) { cache.clear(); } } public void put(String key, String value) { synchronized (cache) { cache.put(key, value); System.out.println(Thread.currentThread().getName() + " cache.put--------" + value); } } public String get(String key) { System.out.println(Thread.currentThread().getName() + " cache.get-----" + cache.get(key)); return cache.get(key); } public static void main(String[] args) { final CacheManage cacheManage = new CacheManage(); Thread[] threads = new Thread[THREADS_COUNT]; for (int i = 0; i < THREADS_COUNT; i++) { threads[i] = new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { cacheManage.put("a", i + 1 + ""); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } cacheManage.get("a"); } } }); threads[i].start(); } } }
上面的缓存管理类,启动2个线程对其进行访问,每个线程做的事情都一样,先put后get,打印的结果为:
Thread-0 cache.put--------1
Thread-1 cache.put--------1
Thread-0 cache.get-----1
Thread-0 cache.put--------2
Thread-1 cache.get-----1
...
分析:Thread0在写数据(将缓存修改成2)的同时,thread1将数据取出来了,thread1读取了旧的缓存。
总结:读时不能写 写时不能读 可以并发读 不能并发写
相关推荐
│ 高并发编程第一阶段20讲、同步代码块以及同步方法之间的区别和关系.mp4 │ 高并发编程第一阶段21讲、通过实验分析This锁的存在.mp4 │ 高并发编程第一阶段22讲、通过实验分析Class锁的存在.mp4 │ 高并发编程...
- **最佳实践**:结合具体案例分享Java并发编程的最佳实践,涵盖设计模式的应用、常见陷阱规避等方面。 ### 实战案例 - **多线程下载**:利用多线程技术实现文件的分块下载与合并,展示并发技术在提高下载速度方面...
通过阅读这些书籍,开发者可以深入理解Java并发编程的底层机制,掌握有效的并发编程技巧,提高程序的运行效率,同时避免并发编程中常见的陷阱和问题。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
7. **并发编程最佳实践**:书中会讨论如何避免并发编程中的常见陷阱,比如避免过度同步、正确处理中断、避免死锁和饥饿等问题。此外,还会讲解如何进行并发性能调优,包括使用JVM的监控和调试工具。 8. **原子操作...
Java并发编程是Java开发者必须掌握的关键技能之一,它涉及到如何在多线程环境中高效、安全地执行程序。并发编程能够充分利用多核处理器的计算能力,提高应用程序的响应速度和整体性能。《Java编程并发实战》这本书是...
│ 高并发编程第一阶段20讲、同步代码块以及同步方法之间的区别和关系.mp4 │ 高并发编程第一阶段21讲、通过实验分析This锁的存在.mp4 │ 高并发编程第一阶段22讲、通过实验分析Class锁的存在.mp4 │ 高并发编程...
总之,《Java并发编程实践》是一本全面、深入的指南,旨在帮助Java开发者掌握并发编程的核心概念和技术,无论是在设计、编码、调试还是维护多线程Java程序方面,都是一本不可或缺的参考书籍。随着摩尔定律效应逐渐...
《Java并发编程实践》这本书是Java开发者深入理解并发编程的重要...通过阅读《Java并发编程实践》,开发者可以学习到如何编写高效、稳定的并发程序,避免并发陷阱,提升软件质量。同时,书中实例丰富,便于实践和理解。
《Java并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。并发和多线程是现代计算机系统中不可或缺的部分,特别是在Java这样的多线程支持语言中。本书详细介绍了如何在Java环境中有效地设计和实现...
在Java的世界里,并发编程是不可或缺的一部分,特别是在现代多核处理器系统中,理解和运用并发技术显得尤为重要。 本书的中文版稀缺性凸显了其价值,它不仅提供了英文原版,还包含了中文翻译的前九章,对于想要学习...
总结起来,J.U.C库是Java并发编程中不可或缺的一部分,它以丰富的并发工具类、高效的执行效率和简洁的API设计,帮助开发者构建起强大的并发应用程序。通过理解J.U.C的工作原理和应用方法,开发者不仅能够编写出性能...
总之,《JAVA并发编程实践》一书涵盖了从基础知识到高级技巧的全面内容,旨在帮助开发者在并发编程的世界中游刃有余,避免常见的陷阱,并提升软件的性能和可靠性。通过学习和实践书中的知识,你将能够更有效地驾驭...
Java并发编程是Java开发者必须掌握的关键技能之一,尤其是在多核处理器和分布式系统广泛使用的今天。以下是对标题和描述中提及的两本经典书籍——《Concurrent Programming in Java》和《Java Concurrency in ...
《Java并发编程实践》是Java并发编程领域的一本经典著作,由Brian Goetz等多位作者共同撰写。这本书深入探讨了如何在Java环境中有效地编写多线程和并发程序,旨在帮助开发者理解和解决并发编程中的各种挑战。 并发...
《Java虚拟机并发编程》一书是关于在JVM平台上进行高效并发编程的权威指南。它详细介绍了如何利用Java平台上的各种并发机制来设计、实现和优化多线程应用程序。书中不仅详细讲解了Java同步模型、软件事务内存(STM)...
《Java高并发程序设计》是一本深入探讨Java平台上的并发编程技术的专业书籍,由葛一鸣等人编著。这本书旨在帮助读者理解并掌握在高并发环境下编写高效、稳定且可扩展的Java应用程序的关键技巧和最佳实践。以下是该书...
《Java并发编程实战》这本书是Java开发者深入理解并发编程的重要参考资料。...这本书不仅适合初学者,也对有经验的开发者有着重要的参考价值,可以帮助他们避免并发编程中常见的陷阱,并提升解决问题的能力。
《Java并发编程实践》是一本深入探讨Java平台并发编程的书籍。它不同于广为熟知的经典之作,但同样具有丰富的知识内容,易于理解,适合初学者和有经验的开发者。本书全面覆盖了Java 5.0引入的并发库,这对于理解和...
《Java并发编程实战》是一本深受Java并发编程爱好者追捧的参考书籍,全面深入地探讨了Java平台上的并发问题。在Java编程中,并发是多线程或多任务同时执行的机制,它极大地提升了程序的执行效率,尤其是在现代多核...