论文部分内容阅读
随着Java多线程技术的普及和完善,并行程序设计技术正逐渐成熟的运用在多核处理器和众核处理器的方方面面。然而在并行程序设计编程模式中,线程安全问题使程序开发人员面临着严峻的挑战。非线程安全问题使多线程开发存在数据竞争造成的程序隐患,甚至会导致整体程序崩溃。为了解决非线程安全问题,Java提供了多线程同步机制,其中包括锁同步机制和原子块同步机制。同时Java提供了线程安全容器的内部同步,例如哈希机制中的Hashtable和ConcurrentHashMap,这些内置同步为多线程机制提供了线程安全保障。使用多线程同步机制能够更好的减少程序隐患成为程序开发人员研究的重要问题。针对多线程同步机制展开研究,以线程安全问题作为切入点,以内置同步的两种哈希机制为具体研究对象对线程安全问题进行探究。通过两种内置同步的哈希机制的对比测试,探究不同场景时Hashtable和Concurrent HashMap的优劣情况,进而为线程同步的哈希机制的自动重构提供理论依据。在哈希机制的背景下,利用JDK1.8中提出的避免非线程安全问题的并行流方法与传统多线程机制进行对比测试,进一步探究线程安全问题的解决方法。在线程安全问题深入研究的基础上,对解决多线程线程安全的同步机制问题展开研究和思考。利用了常见的同步锁机制和原子块无锁同步机制解决线程安全问题。在不同场景下对两种同步机制进行测试,通过不同程序测试环境下的测试结果,探究同步机制的性能差异,分析同步机制在各种场景中的优劣情况,为同步机制的自动重构提供理论依据。本文提出了一种Java多线程同步机制的软件自动重构方法。完成了两种线程安全同步机制的重构工具—Rehasher及Resynchronizer。Rehasher实现了内置同步哈希机制从Hashtable到ConcurrentHashMap的自动重构,Resynchronizer实现了同步锁到同步原子块的自动重构。通过抽象语法树技术来梳理语法结构辅助完成。在Eclipse JDT环境下实现了两种线程安全同步机制的自动重构工具。本重构工具在线程安全同步机制的深入探究的理论支持下实现设计,并用对比测试程序进行测试,测试结果表明Rehasher及Resynchronizer能够高效的实现预期重构工作。