多线程中Object的wait(),notify()和Condition的wait()和singal()对锁的关联

摘要:
Object为任意一个对象,每个对象都存在一个标志位,并具有两个值,分别为0和1。多线程中Object的await()和Condition的wait()方法,在调用时,都会释放当前线程的资源共享锁,Condition的wait方法会将当前线程节点指向等待队列的最后一个节点。多线程中Object的notify()和Condition的singal()方法,在调用时,都会让被唤醒的锁重新获得锁,继续执行Condition的singal方法会将该线程的节点指向同步队列,处于就绪状态,当线程得到系统资源后就进入运行状态。

通常将共享资源的操作放置在Sysnchronized定义的区域内,这样当其他线程也获取到这个锁时,必须的等待锁被释放时才能进入该区域。Object为任意一个对象,每个对象都存在一个标志位,并具有两个值,分别为0和1。一个线程运行到同步块时,首先检查该对象的标志位,如果为0状态,表明此同步块中存在其他线程在运行。这时该线程处于就绪状态,直到处于同步块中的线程执行完同步块中的代码为止。这时该对象的标志位被设置为1.该线程才能执行同步块中的代码,并将Object对象的标志位设置为0,防止其他线程执行同步块中的代码。

多线程中Object的await()和Condition的wait()方法,在调用时,都会释放当前线程的资源共享锁,Condition的wait方法会将当前线程节点指向等待队列的最后一个节点。

多线程中Object的notify()和Condition的singal()方法,在调用时,都会让被唤醒的锁重新获得锁,继续执行Condition的singal方法会将该线程的节点指向同步队列,处于就绪状态(可执行状态),当线程得到系统资源后就进入运行状态。

而suspend()方法让当前的线程挂起并保留锁,当其他线程想访问共享资源时,就会出现死锁(无休止等待),在jdk1.5版本时,已经弃用。

免责声明:文章转载自《多线程中Object的wait(),notify()和Condition的wait()和singal()对锁的关联》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇弹出对话框之Dialog,你一定不知道这些ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#夯实基础之多线程二:主线程、前台线程与后台线程(转载)

       我们在《C#夯实基础之多线程一:初识多线程》一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但在这之前,我们还需要认识一下线程的一些基本特性,它们的出现并不是多余的,而是为了解决一部分问题出现的,毕竟存在即合理,我们先说主线程、前台线程和后台线程:...

从源码中学习设计模式系列——单例模式序/反序列化以及反射攻击的问题(二)

一、前言 这篇文章是学习单例模式的第二篇,之前的文章一下子就给出来看起来很高大上的实现方法,但是这种模式还是存在漏洞的,具体有什么问题,大家可以停顿一会儿,思考一下。好了,不卖关子了,下面我们来看看每种单例模式存在的问题以及解决办法。 二、每种Singleton 模式的演进 模式一 public classLazySingleton {...

使用 Python 和 Oracle 数据库实现高并发性

随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显。并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作。如果您不是编程新手并且很熟悉 C 或 C++,您可能已经对线程和进程有所了解,并且知道它们之间的区别。在进行并发编程时,线程提供了进程的轻量级替代物,在大多数情况下多线程较多进程更...

Tomcat系列(9)——Tomcat 6方面调优(内存,线程,IO,压缩,缓存,集群)

核心部分 内存 线程 IO 压缩 缓存 集群 一、JVM内存优化Tomcat内存优化,包括内存大小,垃圾回收策略。 Windows 下的catalina.bat,Linux 下的catalina.sh  系统响应时间增快; JVM回收速度增快同时又不影响系统的响应率; JVM内存最大化利用; 线程阻塞情况最小化。 -server:一定要作为第一个参数,...

Android Service总结02 service介绍

Android Service总结02 service介绍 版本 版本说明 发布时间 发布人 V1.0 介绍了Service的种类,常用API,生命周期等内容。 2013-03-16 Skywang         概要   若读者之前没接触过service,对下面内容有个大致了解即可。待使用过service之后再来阅读本章内容,会理解...

python网络编程 day35 网络编程——进程池,线程池、协程、回调函数、gevent模块、asyncio模块

一、内容回顾 面试题: 请聊聊进程队列的特点和实现原理 进程之间可以互相通信 IPC 数据安全 先进先出 实现原理 管道+锁 管道是基于文件级别的socket+pickle实现的 你了解生产者消费者模型吗? 了解 为什么了解? 工作经历: 采集图片,爬取音乐,主要是爬取大量数据,想提高爬虫效率,有用过一个生产者消费者模型,这个模型...