`
duming115
  • 浏览: 114288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lock 与Condition的说明

阅读更多
1.Lock是一个monitor object.
2.Condition由Lock创建,lock.newCondition();
3.每个condition后面的队列是单独的。
4.condition也是一个Object对象,这里千万不要把Object.wait()与Condition.await()弄混了,还有Object.notify()和Condition.signal();
5.要想调用Object对象的wait(),notify(),notifyAll()方法,必须通过内部锁的代码方式,synchronized(obj)获得对象obj的锁,而要调用Condition.await(),signal(),signalAll()则要通过显示锁的方式,lock.lock(),获得lock的锁。如果得不锁时会抛出IllegalMonitorStateException异常。
6.java 1.5 的锁框架为java.util.concurrent.locks.AbstractQueuedSynchronizer
有兴趣可以下载附件:
7.Addison.Wesley.Java.Concurrency.in.Practice.May.2006 这本书更是值得一看

2013.08.10 Thread线程的状态图:
引用博客http://www.jroller.com/VelkaVrana/entry/thread_state_transitions_diagram

分享到:
评论

相关推荐

    举例讲解Python编程中对线程锁的使用

    Python的`threading`模块提供了多种锁机制,包括`Lock`、`RLock`、`Condition`、`Event`和`Semaphore`等。其中最基础的是`Lock`对象,它可以用于保护临界区(Critical Section),确保同一时刻只有一个线程可以访问...

    Project3 Interactive OS and Process Management 设计文档1

    void do_condition_wait(lock_id_t lock_id, condition_t *condition){ /* [1] release the lock */ do_mutex_lock_release(lock_id); /* [2] do scheduler */ do_block(condition->block_task, &(condition->...

    Python多线程编程(七):使用Condition实现复杂同步

    Condition对象,也被称作条件变量,它不仅包含了与锁(Lock)相似的acquire()和release()方法,而且额外提供了wait()和notify()方法。Condition的作用是在线程之间进行更细粒度的协调和控制。 使用Condition实现...

    Java教程,包括多线程,泛型,引用,IO,容器类,注解.zip

    JavaTutorial内容说明该Java教程是学习Java过程中对Java知识点进行...内容如下等待/通知机制join方法的使用在char04包里放置了Java中Lock类的知识的代码,内容如下锁类Lock类其他功能條件類型Condition类其他功能鎖鎖

    huluwa.rar_GBGM.m_c++ 锁_huluwa官网_www. huluwa .com

    压缩包内的其他文件可能与游戏或软件的资源、配置、脚本和声音有关,例如 "Game.exe" 是可执行程序,"1.jpg" 和 "0.JPG" 是图像资源,"GameRes Readme.txt" 可能包含资源说明,"Models"、"INI"、"Script"、"Sounds" ...

    nachos实验报告 3 lab3

    在北大操作系统课程的NACHOS实验中,Lab3主要涉及的是并发控制与同步机制的实现。这个实验报告详细记录了学生对于NACHOS操作系统中锁、条件变量等关键概念的理解和实现过程。以下是对报告中提到的知识点的详细说明:...

    android 线程同步

    下面通过一个简单的例子来说明Mutex和Condition的组合使用: ```cpp Mutex myMutex; Condition myCondition; // 假设线程A负责设置变量value,线程B负责等待value达到某个值后执行相应操作 int value = 0; // ...

    Python解决哲学家就餐问题-内含源码以及设计说明书(可以自己运行复现).zip

    5. **线程同步机制**:为避免死锁,我们需要使用一些同步机制,如锁(Lock)、信号量(Semaphore)、条件变量(Condition)等。Python的`threading`模块提供了这些工具。 6. **源码分析**:包含的源码可能使用了...

    Multi_Thread_C++.rar_c/C++

    标题中的"Multi_Thread_C++.rar"表明这是一个关于C++编程...`out.txt`可能是编译输出,而`www.pudn.com.txt`可能包含了关于此示例的来源信息或说明。对于学习多线程编程的初学者,分析这个项目将是一个很好的实践机会。

    MS-DOS6.22命令小结.txt

    - **说明**:用于管理 DOS 的加载与卸载。 #### 28. DOSKEY - **用途**:创建宏来保存和重新执行命令行。 - **语法**:`DOSKEY [command] [macro]` - **说明**:提供类似现代 shell 的历史记录和宏定义功能。 ####...

    基于C++实现的HTTP服务器改进版源码+项目使用说明+详细注释.zip

    **②同步机制实现**:基于unique_lock以及condition_variable实现同步和互斥,符合RAII原则;\ **5)简单客户端**:(可以通过浏览器进行服务端访问,也可以通过该客户端实现交互以及非活动连接处理的测试)\ **...

    JAVA多线程实现2个producer和一个Consumer把整数放入到一个环形缓冲Circle Buffer中

    采用同步机制synchronized/wait(notify)或者lock(unlock)/condition variable实现两个producer和一个consumer之间协调运行。运行结果输出格式为:Put(or Get) number {[content] length start_index end_index} 包含...

    上汽澳新SK81互联网汽车项目系统需求说明书

    - **远程控制空调(Remote Air Condition)**: 远程调节车内温度。 - **远程控制车门锁(Door Lock/Unlock)**: 远程上锁或解锁车门。 ##### 2.3 车辆状态查询(Vehicle Status Check) - **功能**: 实时监测车辆运行...

    多线程编程(说明文档+源程序)

    C++11提供了`std::condition_variable`用于条件等待,而VC可以通过`CreateSemaphore`、`WaitForMultipleObjects`等API实现类似功能。 4. **线程局部存储**:`std::thread_local`关键字用于声明线程局部变量,每个...

    C++-多线程编程总结-实例讲解.doc

    本文将围绕“C++-多线程编程总结-实例讲解”这一主题,深入探讨多线程编程中的几个关键概念和技术,包括并发、异步处理以及缓存机制,并通过具体的实例进行说明。 ## 一、并发:生产者-消费者模型 ### 1.1 生产者-...

    java面试整理资料

    6. **多线程**:线程的创建、同步(synchronized、Lock、Condition等)、并发工具类(如ExecutorService、CountDownLatch、CyclicBarrier)的理解和应用。 7. **JVM**:理解JVM的结构,包括类加载机制、内存区域、...

    linux线程间同步详细说明

    在Linux中,可以使用pthread_mutex_t类型的变量和pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock等函数来操作互斥量。 二、信号量(Semaphore) 信号量是一个整型变量,可以用于控制多个线程的并发...

    Java多线程与线程安全实践-基于Http协议的断点续传.rar

    除了synchronized,还可以使用Lock接口的lock()和unlock()方法,以及Condition来实现更复杂的同步控制。在并发编程中,死锁、活锁和饥饿现象也需要特别注意,避免出现程序阻塞或异常情况。 总的来说,本实践项目...

    python 多线程的同步机制 以python2例程的方式讲解了python 多线程的同步 常用的方法,主要是锁、条件同步、队列

    `threading`模块在Python 3中仍然提供`Lock`、`RLock`、`Condition`和`Queue`等同步工具,使用方法和Python 2相似。Python 3在某些细节上有所改进,如错误处理和API的优化,但基本概念和用法没有大的变化。 演示 ...

Global site tag (gtag.js) - Google Analytics