基于Java的多线程同步机制

基于Java的多线程同步机制

一、基于Java语言的多线程同步机制(论文文献综述)

徐参语[1](2019)在《基于静态检测的克隆代码检测工具的设计与实现》文中研究表明伴随着移动互联网时代的到来,各类型软件应用渗透至社会的各个领域。作为提升软件开发效率的重要手段,代码复用技术、设计模式理论、软件开发框架以及集成开源组件等技术在软件开发过程中扮演着越来越重要的角色。上述技术在提升开发效率的同时,也不可避免地在软件系统的源代码中引入了越来越多的克隆代码。因此,如何对源代码中的克隆代码进行有效检测是软件工程领域越发重要的一个问题。软件系统中克隆代码的检测和管理不仅关系到软件系统的维护与升级,同时也越来越多地与软件安全、知识产权保护等问题联系在一起。基于以上背景,本文提出并实现了一个基于静态检测的克隆代码检测工具,其以函数/类作为克隆检测的基本单位,通过使用TXL语言实现了对源代码函数/类的提取与归一化,并通过粗细粒度结合的克隆检测机制实现了对于C、C++、Java、Python和PHP源代码中Type1、Type2、Type3和Type4类型克隆代码的有效检测,同时保证了检测过程的高效性。本文所做的工作分为以下几部分:1.设计并实现了源代码函数提取模块与源代码归一化模块。基于TXL官方提供的编程语言的语法定义文件,使用TXL对函数定义进行重写,并定义提取规则以构建各编程语言的源代码函数提取模块;同时,针对程序中大量出现的选择型语句与循环型语句,构建了源代码归一化模块以实现对上述两种语句的归一化处理。源代码函数提取模块与源代码归一化模块支持对于C、C++、Java、Python、PHP源代码的函数提取与归一化。本工具对于被测语言的支持比Nicad、Sim Cad更加丰富。2.实现了对于Java源代码中类级别克隆代码的检测。在面向对象程序设计中,类是对象的模板,是对事物性质的抽象,因此在类级别对源代码进行克隆检测,对于进一步挖掘源代码中的克隆行为具有重要意义。本文以Java语言为例,对面向对象的程序设计语言中类级别的克隆代码检测进行了探索,利用TXL实现了对于Java源代码中类的提取与归一化,并实现了Java类的克隆检测。测试结果表明,本工具能够实现对于Java源代码中类级别克隆的有效检测。3.设计并实现了粗粒度克隆检测机制与细粒度克隆检测机制。在对各编程语言的函数结构进行充分研究后,本文提出了函数体量化特征的概念,并基于对实际项目代码的统计分析制定了函数体量化特征,最终以函数体量化特征差异作为标准建立了粗粒度克隆检测机制;同时,本文基于LCS(Longest Common Subsequence,LCS)算法计算函数/类之间的相似度,并使用函数/类之间的相似度作为细粒度克隆检测机制的检测基准,以实现对源代码中Type1-4类型克隆代码的有效检测。测试结果表明,本工具对于Type1-3类型克隆代码的检测效果和Nicad、Sim Cad保持一致,对于Type4类型克隆代码的检测效果优于Nicad、Sim Cad,同时克隆检测效率优于Ni Cad和Sim Cad。4.对本文所提出的克隆代码检测工具进行了充分的测试。本文首先分别对源代码函数提取模块、源代码归一化模块、粗粒度克隆检测模块和细粒度克隆检测模块进行了测试,验证上述模块能够对各语言源代码进行有效处理;然后对工具整体进行测试,验证工具能够对于各种类型的克隆代码实现高效的检测,同时与其他主流克隆代码检测工具进行对比,验证本工具在性能上的提升;最后测试了工具对于Java源代码中类级别克隆代码的检测能力。

王敏[2](2019)在《Java多线程同步机制下的网络售票系统》文中研究指明现如今我国已经进入了信息化的时代,信息技术水平也不断发展,程序的执行效率也在不断提高,多线程的并发执行一直都是传统的提高系统资源利用率的一种技术手段。但是在某些特殊情况下,多个线程在访问一个变量时,如果处理不妥当,很有可能会出现问题,发生混乱。因此多线呈同步机制被引入,这种机制可以保证多个线程同时运行,但是当运行的过程中不会出现多个线程对共享资源同时访问,共享资源的安全性可能会出现一定问题。本文主要探讨了使用Java多线程同步机制模拟网络售票过程,希望能有一定的借鉴作用。

田春婷[3](2018)在《基于Java多线程同步技术的简易模拟售票系统实现》文中指出Java多线程应用程序可以由多个线程调用同一方法,同时线程彼此之间又互不干扰[1]。但是在多个线程同时对共享资源进行读写操作时,有可能会有数据处理不当的问题出现,而Java多线程同步技术可以有效避免这种数据混乱情况。通过对Java多线程同步技术的研究与分析,介绍了简易模拟售票系统的实现。

陈益,王佩[4](2018)在《基于同步机制解决Java多线程安全问题的应用》文中认为为了避免Java应用程序中多个线程共享同一个资源时产生访问冲突,确保线程安全,采用同步机制为每个线程合理地分配访问资源。编写一个模拟火车站售票过程的Java应用程序,由4个线程完成100张火车票的出售,调用sleep方法查看非同步环境下每个线程访问资源的状况。分析多线程采用同步机制和非同步机制的实验给系统带来的影响。实验证明,借助同步机制能合理地为每个线程提供没有任何冲突的资源访问,使Java多线程程序获得更好的健壮性。

李乃健,田纪宏,胥国伟,齐英杰[5](2018)在《操作系统中进程同步算法的仿真研究》文中研究说明在计算机操作系统中,同步的实质就是进程通过共享系统资源的方式相互协作,共同完成一项具体的操作。而实现这一同步问题需要借助于多线程编程技术和方法,用此技术来模拟实现经典的生产者-消费者、读者-写者问题,可以改变传统的以进程为单位的编程技术和方法,优化算法的内部结构,提高算法的效率。

张光平[6](2018)在《Java多线程的分析》文中认为Java是一种网络编程语言,能够实现更好的网络交互工作。而基于Java语言出现的Java多线程技术更是具有很高的现实意义,该技术能够促进各应用程序之间实现有效并行。通过Java多线程技术的应用使网络应用软件的多端同步和终端远程交互成为了可能。本文旨在通过对Java多线程的同步机制和通信机制等模式进行分析,阐述其相关应用,以求实现对JAVA多线程的简要分析。

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

袁野[8](2017)在《基于ARM-DS5的Android应用多线程性能分析工具的设计与实现》文中研究指明随着嵌入式多核技术的不断发展,多核多线程已经成为了嵌入式软硬件设计的发展趋势。因为影响多线程性能的原因非常复杂,为了帮助程序员高效分析多线程程序中存在的性能瓶颈,针对多线程性能分析的专用工具应运而生。虽然ARM-DS5工具链中的Streamline性能分析器有一定的多线程分析功能,比如提供线程起止时间、线程状态和占用CPU时间等信息。但Streamline无法对线程阻塞原因进行统计和分析,更无法提供性能瓶颈的分析和定位。本文以Streamline性能分析器为基础,设计了一款能够有效分析线程阻塞时间、阻塞原因以及正常运行时间等性能指标的性能分析工具,CT Analyzer。本文的工作主要包含两个部分。第一,在分析Streamline采样数据特点的基础上,本文对比了近年来的多线程瓶颈定位模型,最终选择Critical Stacks模型作为瓶颈定位方法的基础,结合采样数据的结构和特点以及POSIX多线程的同步操作原理,设计了适合CT Analyzer的瓶颈定位方法。第二,通过对POSIX多线程同步操作实现机制的分析,利用Streamline的采样数据,完成了一个能够分析多线程应用在运行时线程的状态变化、线程阻塞的时间以及线程阻塞原因,并利用Critical Stacks模型分析和定位瓶颈线程的性能分析工具。为了评估CTAnalyzer性能分析工具功能的完成情况和瓶颈定位方法的准确性,本文选用了 Parsec-2.1和Splash2两大多线程测试集,在四核ARMA9平台(Tiny4412)上进行了实验。实验结果显示,本文设计的CTAnalyzer性能分析工具能够有效分析出多线程应用运行中的线程阻塞时间、线程阻塞原因、正常运行时间等性能问题,利用Critical Stacks实现的瓶颈线程定位方法能够准确定位到瓶颈线程,并且平均并行度的计算误差不超过1%。实验结果表明,本文设计的CTAnalyzer性能分析工具达到了设计指标,符合设计要求。

彭娇[9](2016)在《Java多线程同步机制在网络售票系统中的应用》文中研究表明多线程的并发执行可以提高程序的执行效率,提高系统资源的利用率。然而在某些情况下,当多个线程同时访问一个变量时,如果处理不当,很可能发生混乱。而多线程同步机制的引入则可以保证多个线程可以独立运行、互不干扰。该文主要使用Java的多线程同步机制模拟网络售票过程。

孙惠娟[10](2015)在《内存数据库事务管理器研究》文中提出事务保证了数据库的一致性,线程作为系统运行的组成部分,与事务的运行存在相似性。在用java语言设计的内存数据库中,将事务作为一个线程运行,提出了适合内存数据库的事务模型及状态图。该方法能满足事务的ACID属性,事务的并发控制度较高,采用了结合多种并发控制实现技术优点的锁实现机制和死锁处理方法。

二、基于Java语言的多线程同步机制(论文开题报告)

(1)论文研究背景及目的

此处内容要求:

首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。

写法范例:

本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。

(2)本文研究方法

调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。

观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。

实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。

文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。

实证研究法:依据现有的科学理论和实践的需要提出设计。

定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。

定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。

跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。

功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。

模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。

三、基于Java语言的多线程同步机制(论文提纲范文)

(1)基于静态检测的克隆代码检测工具的设计与实现(论文提纲范文)

摘要
abstract
第一章 绪论
    1.1 研究背景以及意义
        1.1.1 克隆代码检测技术
        1.1.2 克隆代码检测技术的意义
    1.2 国内外研究现状
        1.2.1 基于文本的检测
        1.2.2 基于词法分析的检测
        1.2.3 基于语法分析的检测
        1.2.4 基于语义分析的检测
        1.2.5 其他检测技术
    1.3 研究目标与主要内容
        1.3.1 研究目标
        1.3.2 研究的主要内容
    1.4 论文的组织结构
第二章 相关基础知识
    2.1 克隆代码的定义与分类
        2.1.1 克隆代码的定义
        2.1.2 克隆代码的分类
    2.2 编译原理相关基础知识
        2.2.1 词法分析
        2.2.2 语法分析
    2.3 TXL编程语言
        2.3.1 解析阶段
        2.3.2 转换阶段
        2.3.3 还原阶段
    2.4 本章小结
第三章 克隆代码检测工具的设计
    3.1 工具的设计目标
    3.2 工具所面向的用户
    3.3 工具的主要功能
    3.4 工具的检测流程
    3.5 工具的整体设计
    3.6 本章小结
第四章 基于TXL的源代码函数/类提取与归一化机制
    4.1 源代码函数提取机制
        4.1.1 C++函数提取机制
        4.1.2 Java方法提取机制
        4.1.3 其他语言的函数提取机制
    4.2 Java类提取机制
    4.3 源代码归一化机制
        4.3.1 选择型语句的归一化处理
        4.3.2 循环型语句的归一化处理
    4.4 本章小结
第五章 基于双重粒度的克隆代码检测技术
    5.1 基于函数体量化特征的粗粒度检测机制
        5.1.1 函数体量化特征的定义
        5.1.2 函数体量化特征的制定
        5.1.3 粗粒度检测机制的实现
    5.2 基于LCS算法的细粒度检测机制
        5.2.1 最长公共子序列的定义
        5.2.2 最长公共子序列长度的求解
        5.2.3 细粒度检测机制的实现
    5.3 克隆检测的整体流程
    5.4 本章小结
第六章 模块测试及工具整体测试
    6.1 源代码函数提取模块的测试
    6.2 源代码归一化模块的测试
        6.2.1 选择型语句的归一化测试
        6.2.2 循环型语句的归一化测试
    6.3 克隆检测模块的测试
        6.3.1 粗粒度检测模块的测试
        6.3.2 细粒度检测模块的测试
    6.4 工具整体测试
    6.5 Java源代码类克隆检测的测试
    6.6 本章小结
第七章 总结与展望
    7.1 论文总结
    7.2 展望
致谢
参考文献
攻硕期间的研究成果

(2)Java多线程同步机制下的网络售票系统(论文提纲范文)

1 Java多线程机制的使用
    1.1 Java中的多线程
    1.2 多线程机制的实现
2 多线程的同步机制的使用
    2.1 多线程同步机制的概念
    2.2 多线程同步机制在网络售票系统中的应用
3 结束语

(3)基于Java多线程同步技术的简易模拟售票系统实现(论文提纲范文)

1 Java多线程背景知识
2 简易模拟售票系统
    2.1 简易模拟售票系统算法及代码
    2.2 执行结果及问题分析
3 Java同步技术
4 简易模拟售票系统代码的进一步改进
5 结语

(4)基于同步机制解决Java多线程安全问题的应用(论文提纲范文)

0 引言
1 多线程概念、Java多线程创建方式与同步机制
2 多线程同步机制
    2.1 访问共享资源引发线程安全问题
    2.2 同步机制保证线程间访问安全
    2.3 多线程同步块与同步原理分析
3 同步关联问题
    3.1 同步失效
    3.2 线程死锁
4 结语

(5)操作系统中进程同步算法的仿真研究(论文提纲范文)

0 引言
1 进程同步
2 实现进程同步算法的技术
    2.1 Java内在支持多线程技术
    2.2多线程编程的重要性
3 经典进程同步算法的仿真实现
    3.1生产者-消费者问题
        (1) 问题分析与设计
        (2) 部分代码实现
        (3) 实验结果
    3.2读者-写者问题
        (1) 问题分析与设计
        (2) 部分代码实现
        (3) 实验结果
4 结语

(6)Java多线程的分析(论文提纲范文)

1 Java多线程机制
    1.1 什么是线程
    1.2 Java语言多线程
        1.1.1 对多线程的支持
        1.1.2 对多线程的同步
        1.1.3 通信机制
2 Java多线程的应用
    2.1 C1ient处理系统
    2.2 多线程Server
3 结语

(7)并行程序中同步机制的软件自动重构方法研究与实现(论文提纲范文)

摘要
Abstract
第1章 绪论
    1.1 研究背景与意义
    1.2 国内外研究现状
    1.3 研究目的
    1.4 研究内容
    1.5 本文的整体布局
第2章 基于线程安全软件重构的工作综述
    2.1 Java多线程的线程安全
        2.1.1 哈希表中的线程安全
    2.2 Java多线程的同步机制
        2.2.1 多线程同步锁
        2.2.2 多线程同步原子块及ABA问题的解决和研究
    2.3 软件重构方法
        2.3.1 软件重构国内外背景
        2.3.2 基于多线程的软件重构的现实意义
        2.3.3 软件重构方法研究
        2.3.4 软件并行化重构
    2.4 本章小结
第3章 并行环境下Java哈希机制的对比及重构研究
    3.1 问题的提出
    3.2 性能比较框架
        3.2.1 Hashtable和ConcurrentHashMap的对比
        3.2.2 基于JAVA哈希表的并行流的程序设计
    3.3 实验
        3.3.1 Hashtable与ConcurrentHashMap多线程读写性能对比
        3.3.2 面向哈希表的重构
        3.3.3 基于哈希表的并行流性能对比
    3.4 本章小结
第4章 面向Java中多线程同步机制的研究
    4.1 Java中的多线程同步机制
        4.1.1 锁同步机制
        4.1.2 原子块同步机制
    4.2 编程模式对比
    4.3 锁与原子块的性能对比
    4.4 本章小结
第5章 基于抽象语法树机制的软件重构方法
    5.1 软件重构方法概述
    5.2 抽象语法树
        5.2.1 抽象语法树机制概述
        5.2.2 基于抽象语法树机制的重构逻辑的设定
    5.3 本章小结
第6章 重构工具的设计与实现
    6.1 开发平台与工具
        6.1.1 Eclipse LTK重构框架
        6.1.2 Eclipse插件
        6.1.3 ASTView工具
    6.2 重构工具的实现
        6.2.1 AST的创建
        6.2.2 AST的遍历
        6.2.3 生成JDT代码
    6.3 重构工具界面的设计
        6.3.1 测试环境
        6.3.2 重构界面设计
    6.5 本章小结
总结
参考文献
攻读硕士学位期间所发表的论文
致谢

(8)基于ARM-DS5的Android应用多线程性能分析工具的设计与实现(论文提纲范文)

摘要
Abstract
第一章 绪论
    1.1 背景与意义
        1.1.1 背景
        1.1.2 意义
    1.2 国内外研究现状
    1.3 研究内容和设计指标
        1.3.1 研究内容
        1.3.2 设计指标
    1.4 论文组织
第二章 相关背景技术简介
    2.1 软件的性能
        2.1.1 软件性能指标
        2.1.2 软件性能瓶颈
    2.2 多线程同步原理
        2.2.1 POSIX线程与多线程同步
        2.2.2 安卓线程与多线程同步
    2.3 Linux线程同步机制Futex
        2.3.1 线程同步机制概述
        2.3.2 线程同步机制系统调用
        2.3.3 线程同步机制同步操作
    2.4 ARM-Streamline性能分析器介绍
        2.4.1 Streamline性能分析器概述
        2.4.2 gator模块概述
    2.5 本章小结
第三章 性能瓶颈定位方法研究
    3.1 Streamline性能分析器的采样过程分析和数据结构
        3.1.1 采样过程
        3.1.2 数据结构
    3.2 瓶颈定位方法选取
        3.2.1 Bottleneck Identification and Scheduling模型
        3.2.2 Critical Stacks模型
        3.2.3 Bottle Graph模型
        3.2.4 瓶颈定位模型选择
    3.3 POSIX多线程同步API分析
        3.3.1 互斥锁
        3.3.2 读写锁
        3.3.3 Barriers栅栏
        3.3.4 信号量
    3.4 ELF文件结构解析
        3.4.1 ELF文件概述
        3.4.2 readelf结果分析
        3.4.3 objdump结果分析
    3.5 瓶颈定位方法实现方案
        3.5.1 实现方案介绍
        3.5.2 实现方案对比
    3.6 本章小结
第四章 CT Analyzer性能分析工具设计和实现
    4.1 设计框架
    4.2 执行流程
    4.3 主要模块功能模块设计
        4.3.1 Streamline数据解码模块
        4.3.2 数据预处理模块
        4.3.3 Summary功能模块设计
        4.3.4 Reason Analysis功能模块设计
        4.3.5 Critical Stacks功能模型模块设计
        4.3.6 Heat-Map模块设计
        4.3.7 图形用户界面的设计
    4.4 本章小结
第五章 实验验证与结果分析
    5.1 实验设计
        5.1.1 测试软硬件平台介绍
        5.1.2 测试环境搭建
        5.1.3 测试集选取
    5.2 CT Analyzer功能对比
        5.2.1 被测应用进线程定位数据
        5.2.2 同步性事件原因分析
        5.2.3 被测应用运行时间
        5.2.4 同步性事件造成等待时间
        5.2.5 HeatMap模块功能对比
    5.3 Critical Stacks瓶颈线程定位与平均并行度
        5.3.1 Critical Stacks瓶颈线程定位
        5.3.2 线程平均并行度
    5.4 案例分析
    5.5 指标完成情况
    5.6 本章小结
第六章 总结与展望
    6.1 总结
    6.2 展望
致谢
参考文献

(9)Java多线程同步机制在网络售票系统中的应用(论文提纲范文)

1 Java多线程机制的使用
    1.1 Java中的多线程
    1.2 多线程机制的实现
2 多线程的同步机制的使用
    2.1 多线程同步机制的概念
    2.2 多线程同步机制在网络售票系统中的应用
3 结语

四、基于Java语言的多线程同步机制(论文参考文献)

  • [1]基于静态检测的克隆代码检测工具的设计与实现[D]. 徐参语. 电子科技大学, 2019(01)
  • [2]Java多线程同步机制下的网络售票系统[J]. 王敏. 电子技术与软件工程, 2019(04)
  • [3]基于Java多线程同步技术的简易模拟售票系统实现[J]. 田春婷. 电脑编程技巧与维护, 2018(12)
  • [4]基于同步机制解决Java多线程安全问题的应用[J]. 陈益,王佩. 软件导刊, 2018(12)
  • [5]操作系统中进程同步算法的仿真研究[J]. 李乃健,田纪宏,胥国伟,齐英杰. 现代计算机(专业版), 2018(09)
  • [6]Java多线程的分析[J]. 张光平. 科技风, 2018(01)
  • [7]并行程序中同步机制的软件自动重构方法研究与实现[D]. 郑雅洁. 河北科技大学, 2018(04)
  • [8]基于ARM-DS5的Android应用多线程性能分析工具的设计与实现[D]. 袁野. 东南大学, 2017(04)
  • [9]Java多线程同步机制在网络售票系统中的应用[J]. 彭娇. 科技资讯, 2016(29)
  • [10]内存数据库事务管理器研究[J]. 孙惠娟. 数字技术与应用, 2015(08)

标签:;  ;  ;  ;  ;  

基于Java的多线程同步机制
下载Doc文档

猜你喜欢