`
cuizhenfu#gmail.com
  • 浏览: 67462 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

多线程程序避免冲突的3条简单规则

阅读更多
Concurrent Programming in Java<concurrent programming="" in="" java="">第二版中1.1.1.1中介绍了3条简单的规则以避免冲突问题
</concurrent>
  1. 当更新对象域的时候总是锁定
  2. 当访问可能更新的对象域的时候总是锁定
  3. 当调用其它对象方法的时候总是锁定
这些规则有很多例外,但是作为基本规则,我们在设计多线程程序的时候需要时时考虑记得
Concurrent Programming in Java这本书很好,由于在设计jxta程序程序的时候,不可避免的要涉及很多线程的问题,因此强烈推荐阅读,附件是该书的电子版本

对象构造完成后才允许访问对象域

构造函数应该只执行那些跟域的初始化直接相关的动作
构造函数不应该调用那些依赖于对象被完整初始化的方法
构造函数应该避免记录在域或被其它对象访问的表中正在被构造的对象的引用
避免调用用this作为参数的其它方法,更一般的,避免允许the reference to this to escape
如果没有这些预防措施,other objects and methods running in other threads could instead access the default-initialized zeros (for scalar fields) or nulls (for reference fields) set by the JVM for each Object before its constructor is executed.
分享到:
评论

相关推荐

    Win32 多线程程序设计_纯文本转成的PDF

    《Win32多线程程序设计》是著名技术专家侯捷先生的一部经典著作,它深入浅出地探讨了在Windows操作系统环境下如何进行多线程编程。这本书对于想要提升Windows平台下程序性能、理解和掌握多线程编程技术的开发者来说...

    实验二、嵌入式Linux多线程编程实验

    实验二的目的是让学生深入理解嵌入式Linux环境下的多线程编程,这涉及到对线程概念、创建和管理的理解,以及如何在编程中引入线程库。线程是操作系统资源调度的基本单位,允许在一个进程中并发执行多个执行路径,...

    多线程的日志记录.rar

    在多线程编程中,日志记录是一项至关重要的任务,它可以帮助开发者跟踪程序运行状态,定位问题,以及在系统出现故障时提供诊断信息。本文将深入探讨如何在多线程环境中有效地实现日志记录。 首先,我们需要理解多...

    java程序 两个线程实现学生成绩的读写

    Java程序中的多线程技术是实现并发操作的关键,尤其在处理并发读写数据时,如在本例中,我们有两条线程分别负责读取和写入学生的成绩数据。这样的设计可以提高程序的效率,同时需要确保数据的一致性和安全性。 首先...

    多线程队列

    2. **先进先出(FIFO)原则**:多线程队列通常遵循先进先出的规则,即最早放入队列的任务会被最早取出执行。 3. **非阻塞操作**:设计良好的多线程队列应尽可能减少线程之间的等待,以提高效率。当队列为空或满时,...

    易语言源码易语言多线程许可证的理解使用源码.rar

    在易语言中,多线程技术是一项重要的编程概念,用于实现程序的并发执行,提高程序运行效率。许可证则是使用或分发软件时必须遵循的法律协议,它规定了软件的使用范围、修改权限以及分发条件等。 在“易语言源码...

    java多线程和并发.pdf

    Java多线程与并发编程是Java语言中用于处理多任务执行的关键技术,它能够帮助开发者设计出能够有效应对高并发请求的应用程序。在现代的线上(Online)和离线(Offline)应用中,合理利用多线程技术可以大幅提高系统...

    多线程游戏-snake贪吃蛇

    在Java编程语言中实现贪吃蛇游戏,我们会涉及多线程技术,这是理解并发处理和提升程序性能的关键概念。下面我们将详细探讨如何使用Java实现一个多线程的Snake游戏。 首先,贪吃蛇游戏的核心是蛇的移动和食物的生成...

    多线程编程指南

    **获取互斥锁的强健属性**:了解互斥锁的强健属性有助于设计更健壮的多线程程序,避免因线程异常退出导致的死锁。 **使用互斥锁** - **初始化互斥锁**:在使用互斥锁前,必须先初始化互斥锁,设置其初始状态。 - *...

    三缓冲区 多线程处理,抓包例子

    但在多线程环境下,为了提高效率和避免线程间的竞争条件,引入了多个缓冲区,如这里的三个缓冲区。每个缓冲区由一个特定的线程负责读取和处理数据,这样可以实现数据的并行处理,提高整体性能。当一个线程正在处理一...

    易语言多线程许可证应用源码

    2. **多线程编程**:在易语言中,如何创建和管理线程,如何通过同步机制(如信号量、互斥锁)避免线程间的冲突,以及如何利用线程池提高系统资源利用率。多线程技术有助于实现并行处理,加快程序运行速度。 3. **...

    多线程死锁,活锁,竞争锁问题总结

    #### 三、多线程中的死锁问题 **定义:** 死锁是指两个或多个线程在执行过程中,因为互相等待对方持有的资源而不释放自己的资源,导致所有涉及的线程都无法继续执行的状态。 **产生原因:** 1. **互斥条件**:资源...

    多线程批量修改文件名

    在IT行业中,多线程批量修改文件名是一个常见的任务,特别是在处理大量文件时,为了提高效率,使用多线程技术可以显著提升性能。本项目利用C#编程语言实现了这一功能,特别针对迅雷下载的电视剧文件,这些文件往往...

    VC++多线程下内存操作的优化

    在VC++编程环境中,多线程技术被广泛用于提高程序的执行效率,特别是在处理大量并发任务时。然而,多线程环境下内存操作的优化是一项挑战,因为它涉及到...理解和掌握这些知识点将有助于编写出高效、稳定的多线程程序。

    C# 多线程同步、异步_AutoResetEvent用法

    多线程允许程序同时执行多个任务,提高系统资源利用率和程序响应速度。在C#中,可以使用`System.Threading`命名空间中的`Thread`类来创建和管理线程。每个线程都有自己的执行路径和上下文。 ### 二、线程同步与异步...

    多线程文本文件排序

    首先,多线程是并发编程的核心概念之一,它允许程序同时执行多个任务,从而充分利用多核处理器的计算能力。在处理大规模文本文件时,单线程的排序可能会消耗大量时间和系统资源,而多线程则可以显著提高效率。 文本...

Global site tag (gtag.js) - Google Analytics