`
luoye6401531
  • 浏览: 10939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

多线程同步和性能

阅读更多

操作系统作业是模拟超市运行,多线程的问题。

做完之后,对多线程同步和性能的理解进了一步。

一,同步的目的是确保进入代码块后可以看到由同一个锁控制的对象的所有状态转变结果。

如果不同步可能导致

1,观察到对象的不一致状态

2,看不到其他线程对对象的修改

二,wait()的标准写法

java 代码
  1. synchronized(obj)   
  2. {   
  3.     while(<conditon>)   
  4.    {   
  5.        obj.wait();   
  6.    }   
  7.   // to do   
  8. }  

在其他线程通知他

java 代码
  1. synchronized(obj)   
  2. {   
  3.     obj.notifyAll();   
  4. }  

三,如果只有一个线程在一个特定对象上等待,应该用notify()

四,在同步块中,尽量做少的事。不要在其中调用外部提供的方法,可能死锁

感谢Joshua Bloch和他的<<Effective Java>>

分享到:
评论

相关推荐

    Delphi多线程同步的例子

    在编程领域,多线程是实现并发执行任务的重要方式,特别是在 Delphi 这样的面向对象的编程环境中。本文将深入探讨Delphi中的多线程和线程同步,并以...记得在编写多线程代码时,始终保持对数据安全和程序性能的关注。

    3种多线程实现同步方法

    本篇文章将深入探讨三种在C++中实现多线程同步的方法:事件对象、关键代码段和互斥对象。 首先,我们来看**事件对象**。事件对象是一种信号机制,用于线程间通信和同步。在Windows API中,CreateEvent函数创建一个...

    C#实现多线程同步并发操作

    本文将深入探讨如何在C#中实现多线程同步并发操作,这不仅对于提高软件性能至关重要,也是高级程序员必须掌握的核心技能之一。 ### C#中的多线程同步并发操作 多线程编程可以极大地提高CPU的利用率,特别是在处理I...

    MFC多线程同步类的使用

    【MFC多线程同步类的使用】 在MFC(Microsoft Foundation Classes)中,多线程编程是一项重要的技术,尤其在开发复杂的、并发执行的任务时。多线程允许程序同时执行多个任务,提升效率和响应速度。然而,线程间的...

    JNI 多线程同步机制的源码实现

    JNI(Java Native Interface)是Java平台提供的一种标准接口,允许Java代码和其他语言写的代码进行交互。在多线程环境中,当涉及到与本地代码...理解和掌握JNI的多线程同步机制对于Java开发者深入系统级编程至关重要。

    多线程同步大量数据转录的多线程和同步

    在现代软件开发中,多线程同步机制是优化性能、提高系统吞吐量的关键手段之一,尤其是在面对大数据处理任务时。 ### 多线程同步的重要性 在处理大量数据时,单一线程往往难以满足高效处理的需求。多线程技术允许多...

    操作系统实验多线程同步(含C++源代码)

    操作系统中的多线程同步是一个关键概念,特别是在并发编程中,它涉及到如何协调多个线程以避免数据不一致性和竞态条件。在这个实验中,我们关注的是C++编程语言中的实现,以及操作系统如何处理线程的优先级。 首先...

    五个多线程同步应用小程序

    本文将深入探讨在.NET框架中用于多线程同步的三个主要工具:Monitor、Mutex和EventWaitHandle,并结合提供的"五个多线程同步应用小程序",解释它们的应用场景和使用方法。 首先,我们来看Monitor类。Monitor是.NET...

    多线程同步演示(采用CreateThread()和WaitForMultipleObjects()函数)

    以下是对这两个函数及其在多线程同步演示中的应用的详细解释。 首先,`CreateThread()`函数用于创建一个新的线程来执行指定的函数,即线程的入口点。该函数接收一系列参数,包括线程函数指针、初始线程堆栈大小、...

    利用临界区的多线程同步测试.rar_临界区_多线程同步_线程 同步_线程同步

    通过深入理解临界区和多线程同步的概念,开发者能够编写出高效且线程安全的代码,这对于现代多核处理器和分布式系统中的高性能应用程序至关重要。在分析和调试多线程程序时,理解和掌握这些机制也是必不可少的。

    c++多线程同步——信号量

    在C++编程中,多线程同步是一种关键的技术,它允许多个执行线程协同工作,以避免数据竞争和死锁等并发...在MFC工程中,通过自定义信号量类和Windows API,我们可以有效地解决多线程同步问题,确保程序的正确性和性能。

    windows多线程的同步和互斥

    在Windows操作系统中,多线程编程是实现并发执行任务的有效方式。当一个进程中存在多个执行流,即多个线程,它们可以共享...在实际开发中,理解并熟练运用这些概念和方法,对于优化程序性能和保证程序稳定性至关重要。

    多线程同步Demo

    本Demo主要关注四种多线程同步机制:临界区(CriticalSection)、互斥量(Mutex)、事件(Event)以及信号量(Semaphore)。下面将详细阐述这些概念及其在实际应用中的作用。 1. 临界区(CriticalSection) 临界区...

    多线程及线程同步

    然而,多线程环境下也带来了一些问题,尤其是资源竞争和数据一致性问题,这些问题需要通过线程同步机制来解决。本文将详细介绍如何通过临界区、互斥内核对象、事件内核对象和信号量内核对象来实现线程同步。 1. ...

    多线程的批量线程同步解决方案

    在IT行业中,多线程编程是一项关键技能,尤其是在性能优化和并发处理方面。"多线程的批量线程同步解决方案"这个标题暗示我们探讨的是如何在多线程环境下有效地管理和同步多个任务,确保数据一致性与程序正确性。下面...

    NET多线程同步方法详解

    综上所述,.NET框架提供了丰富的多线程同步机制,开发者可以根据实际需求选择合适的工具来确保并发环境下的程序正确性和性能。理解并灵活运用这些机制是编写高效、安全的多线程代码的关键。在设计多线程应用时,应...

    多线程的同步机制 VC++

    多线程同步机制在软件开发中扮演着至关重要的角色,特别是在多处理器系统或者并发执行的任务中,确保线程间的正确协作和数据一致性是必不可少的。VC++中提供了多种同步机制来处理多线程间的同步问题,其中Event是...

    vc 多线程实例同步,异步

    总的来说,理解和掌握VC++中的多线程同步和异步是提升程序性能和稳定性的重要手段。开发者需要深入理解各种线程同步机制,合理运用异步操作,确保代码的正确性和可维护性。在实际项目中,应根据需求选择合适的线程...

    多线程同步

    多线程性能一直是困扰我们代码性能的一个难点,代码中给出了一种方式,去同步字符串,线程携带同一个字符串进入同步方法中,会阻塞,非同一个字符串不会阻塞,所以我们可以考虑用账户名称、或一些账户独有不会重复的...

    Jni多线程同步事例

    在本例“Jni多线程同步事例”中,我们将探讨如何在JNI层面上实现多线程同步,特别是在一个生产者-消费者模型的场景下。 生产者-消费者模型是一种经典的并发问题,它涉及到两个或多个线程之间的协作。在该模型中,...

Global site tag (gtag.js) - Google Analytics