精华内容
下载资源
问答
  • Monitor

    千次阅读 2019-03-17 12:43:54
    Monitor 首先,monitor是一个同步工具,提供线程(进程)被阻塞和被唤醒的管理机制。 semaphore 和 mutex 在编程上容易出错,因为我们需要去亲自操作变量以及对 进程/线程 进行阻塞和唤醒。 monitor 这个机制之所以...

    Monitor

    首先,monitor是一个同步工具,提供线程(进程)被阻塞和被唤醒的管理机制。

    semaphore 和 mutex 在编程上容易出错,因为我们需要去亲自操作变量以及对 进程/线程 进行阻塞和唤醒。
    monitor 这个机制之所以被称为**“更高级的原语”,那么它就不可避免地需要对外屏蔽掉这些机制,并且在内部**实现这些机制,使得使用 monitor 的人看到的是一个简洁易用的接口。

    监视器Monitor内部,是怎么做到线程同步的(JAVA中Monitor的实现)。

    Monitor机制 的实现,属于编译器的工作。

    在java虚拟机中,每一个对象头都关联着Monitor,每一个监视器和一个对象引用相关联,为了实现监视器的互斥功能,每个对象都关联着一把锁(有时候又叫“互斥量mutex”,信号量)。

    一旦方法或者代码块被Synchronized修饰,那么这个部分就放入了监视器的监事区域,确保一次只能有一个线程执行该部分的代码,线程在获取锁之前不允许执行该部分的代码。

    monitor的基本元素

    a 临界区—被synchronized修饰的方法、代码块。
    b monitor对象以及锁
    c 条件变量以及定义在monitor对象上的wait signal操作

    首先,monitor机制是为了互斥进入临界区,所以那些被阻塞的线程就需要一个monitor object来协助保存被阻塞的线程(monitor object内部会有相应的数据结构,如列表等);

    其次,monitor机制本质上是基于互斥量mutex(值为1的信号量)这种基本原语的,所以 monitor object 还必须维护一个基于 mutex 的锁。

    还有,引入一个条件变量决定什么时候阻塞/唤醒线程。程序员对该条件变量的定义有很大的自主性。不过,由于 monitor object 内部采用了数据结构来保存被阻塞的队列,因此它也必须对外提供两个 API 来让线程进入阻塞状态以及之后被唤醒,分别是 wait 和 notify。

    1. 在java中,临界区,就是被synchronized修饰的方法、代码块。
    2. monitor object就是synchronized关联的对象。synchronized 如果修饰的是实例方法,那么其关联的对象实际上是 this,如果修饰的是类方法,那么其关联的对象是 this.class。
    3. monitor 的机制中,monitor object 充当着维护 mutex以及定义 wait/signal API 来管理线程的阻塞和唤醒的角色。

    在java中,java.lang.Object类满足上述要求,所以任何一个JAVA对象都可以作为Monitor机制的monitor object。

    而在本人的另一篇文章中有说到相关对象在内存中的存储,详细请看:《对象在内存中的存储&&基本类型和包装类&&java类型转换》

    了解了对象在内存中的存储之后,我们来看一下,monitor在对象中是如何存储的:
    Java 对象存储在内存中,分别分为三个部分,即对象头、实例数据和对齐填充,而在其对象头中,保存了锁标识(其中的重量级锁指的就是synchronized锁)。

    详细的对象头的介绍见:《Synchronized详解(可重入、Monitor原理等)》

    同时,java.lang.Object 类定义了 wait(),notify(),notifyAll() 方法,这些方法的具体实现,依赖于一个叫 ObjectMonitor 模式的实现,这是 JVM 内部基于 C++ 实现的一套机制,基本原理如下所示:在这里插入图片描述

    当一个线程需要获取 Object 的锁时,会被放入 EntrySet 中进行等待,如果该线程获取到了锁,成为当前锁的 owner。如果根据程序逻辑,一个已经获得了锁的线程缺少某些外部条件,而无法继续进行下去(例如生产者发现队列已满或者消费者发现队列为空),那么该线程可以通过调用 wait 方法将锁释放,进入 wait set 中阻塞进行等待,其它线程在这个时候有机会获得锁,去干其它的事情,从而使得之前不成立的外部条件成立,这样先前被阻塞的线程就可以重新进入 EntrySet 去竞争锁。这个**外部条件**在 monitor 机制中称为**条件变量**。
    

    部分转自:https://www.jianshu.com/p/7f8a873d479c

    展开全文
  • monitor

    2018-07-02 18:19:32
  • 编写不易,如有转载,请声明...  昨晚自己弄了一会儿没弄出来,就想着明天打开电脑打开AS,Android Monitor应该会自己调出来的,结果没出来…问题解决  我的整个恢复操作是这样的(2M gif时间有限 操作较快勿怪):

    编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/73834327

    前言

      我的整个坑爹操作是这样的:
    这里写图片描述

      昨晚自己弄了一会儿没弄出来,就想着明天打开电脑打开AS,Android Monitor应该会自己恢复出来的,结果没有…

    问题解决

      我的整个恢复操作是这样的(2M gif时间有限 操作较快勿怪):
    这里写图片描述

    大概讲解

    • 解决找不到Android Monitor:双击shift键两下调出Search Everywhere,输入Android Monitor,可以调出Android Monitor,并自动依附在SideBar位置

    • 解决logcat或Monitors的找不到问题:
      这里写图片描述

    • 解决logcat或Monitors的漂浮问题:
      这里写图片描述

    • 解决Android Monitor的漂浮问题:
      这里写图片描述
        取消勾选FloatingMode,不要勾选WindowedMode(不是必须要选择一个,可以取消勾选)

    • 还遇到过控制台的几个问题:1,把控制台的Toolbar点没了:找到Show Toolbar把前面勾选上就好了;2,控制台Logcat下的控制栏不显示了:将控制台的展示调成WindowedMode,然后再取消,初始化控制台即恢复显示;
      在这里插入图片描述
      3,把控制台的时间点成了时间戳的展示形式了: 如下图操作,将Show as second since epoch取消勾选即可在这里插入图片描述

    ----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

    展开全文
  • Monitor简介

    千次阅读 2020-10-28 10:37:13
    什么是Monitor? 1.Monitor是一种用来实现同步的工具 2.与每个java对象相关联,即每个java对象都有一个Monitor与之对应 3.Monitor是实现Sychronized(内置锁)的基础 Monitor的基本结构是什么? 1.Owner字段:...

    什么是Monitor?

    1.Monitor是一种用来实现同步的工具

    2.与每个java对象相关联,即每个java对象都有一个Monitor与之对应

    3.Monitor是实现Sychronized(内置锁)的基础

     

    Monitor的基本结构是什么?

    1.Owner字段:初始时为NULL表示当前没有任何线程拥有该monitor record,当线程成功拥有该锁后保存线程唯一标识,当锁被释放时又设置为NULL

    2.EntryQ字段:关联一个系统互斥锁(semaphore),阻塞所有试图锁住monitor record失败的线程

    3.RcThis字段:表示blocked或waiting在该monitor record上的所有线程的个数

    4.Nest字段:用来实现重入锁的计数

    5.HashCode字段:保存从对象头拷贝过来的HashCode值(可能还包含GC age)

    6.Candidate字段:用来避免不必要的阻塞或等待线程唤醒,因为每一次只有一个线程能够成功拥有锁,如果每次前一个释放锁的线程唤醒所有正在阻塞或等待的线程,会引起不必要的上下文切换(从阻塞到就绪然后因为竞争锁失败又被阻塞)从而导致性能严重下降;Candidate只有两种可能的值0表示没有需要唤醒的线程1表示要唤醒一个继任线程来竞争锁

    参考: Java中synchronized的实现原理与应用

     

    Monitor与java对象以及线程是如何关联的?

    可以参考我前面的一篇文章: java对象堆内存结构

    1.如果一个java对象被某个线程锁住,则该java对象的Mark Word字段中LockWord指向monitor的起始地址

    2.Monitor的Owner字段会存放拥有相关联对象锁的线程id

     

    Monitor具体是怎么实现的?

    1.Monitor是在jvm底层实现的,底层代码是c++

    2.Monitor的enter方法:获取锁

    3.Monitor的exit方法:释放锁

    4.Monitor的wait方法:为java的Object的wait方法提供支持

    5.Monitor的notify方法:为java的Object的notify方法提供支持

    6.Monitor的notifyAll方法:为java的Object的notifyAll方法提供支持

    展开全文
  • Cyber_monitor的使用

    万次阅读 2020-06-02 17:24:57
    Cyber_monitor的使用 打开UI界面(绿色代表有数据流) username@computername:~$: cyber_monitor 常用命令 #查看帮助 username@computername:~$: cyber_monitor -h #指定通道 username@computername:~$: ...
  • InnoDB Monitor

    千次阅读 2015-12-02 13:55:44
    有四类InnoDB monitor:Standard Monitor、Lock Monitor、Tablespace Monitor、Table Monitor。其中Tablespace Monitor和Table Monitor将在后续版本(MySQL5.7中移除,对应的信息可从information_schema的表中获取)...
  • monitor模式

    千次阅读 2019-06-05 13:28:12
    设计模式monitor模式 monitor模式 监视器是一个方法相互排斥的类,因此一次只能有一个线程位于类的实例中.即用ADT自己做lock 实现方法: 在所有方法内加上synchronized(this)或者synchronized 形如 public class ...
  • monitor out

    2019-09-20 20:17:51
    monitor out 所提供的电脑连接线一端连接到投影仪上的 computer in (电脑输入)接口,将另一端连接到电脑上的 vesa 接口。如果使用的是台式电脑,则首先需要将电脑显示器连接线与电脑的视频端口断开连接,您可以将该...
  • GPU Monitor

    2016-12-15 14:53:39
    GPU Monitor能做什么? 分析GPU的性能,实时查看绘制每一帧所花费的时间 GPU Monitor使用准备 root 手机开发者选项中的Gpu profile开关打开Android Studio 1.4+ GPU Monitor启动 在Android Monitor中点击GP
  • Monitor

    2018-04-04 14:14:47
    private static object obj = new ...当前线程释放obj锁(通过Monitor.Exit()或Monitor.Wait()来释放),该队列内的线程会去竞争obj锁,获得obj锁的线程会被T引用。队列W:等待队列,该队列中的线程是因调用了Mon...
  • DDMS报错:Failed to initialize Monitor Thread: ...... 在Eclipse文件夹下的eclipse.ini中,看到有类似下面的字符串: openFile -vmargs -Dosgi.requiredJavaVersion=1.6 在其后面加入下面这句(如果eclipse.ini...
  • 启动monitor失败

    千次阅读 2018-12-17 20:08:53
    启动monitor失败,出现错误:   1. 先结束Android Studio,然后再以管理员身份运行; 2.在任务管理器中,查看是否存在monitor.exe进程,如果存在杀死; 做完以上两步,再打开monitor,成功。...
  • 关于monitor模式

    千次阅读 2018-12-27 21:23:39
    原址     monitor模式需要 wifi芯片本身支持,同时,驱动中存在相关接口。...而在monitor模式时,内核会直接将802.11帧传递给上层,不再进行封装,这样用户层通过接口就可以得到8...
  • Redis Monitor 调试

    2019-08-06 14:36:57
    Redis Monitor 命令 Redis Monitor 命令用于实时打印出 Redis 服务器接收到的命令,调试用。 语法 redis Monitor 命令基本语法如下: redis 127.0.0.1:6379> MONITOR 可用版本 >= 1.0.0 返回值 总是...
  • Java monitor 实现

    2020-06-29 16:25:02
    monitor 是操作系统提出来的一种高级原语,但其具体的实现模式,不同的编程语言都有可能不一样。以下以 Java 的 monitor 为例子,来讲解 monitor 在 Java 中的实现方式。 在Java中,一个对象对应了一个momitor对象...
  • Verilog 监控 Monitor

    2020-11-09 21:39:25
    Verilog provides a mechanism to monitor a signal when its value changes. This facility is provided by the $monitor task. Usage: $monitor(p1,p2,p3,....,pn); The parameters p1, p2, ... , pn can be ...
  • ServiceMonitor

    千次阅读 2016-08-25 17:38:44
    我们先看ServiceMonitor的构造函数。就是保存几个变量 161 public ServiceMonitor(String ownerTag, boolean debug, 162 Context context, String settingKey, Callbacks callbacks) { 163 mTag = ownerTag +
  • Druid Monitor监控

    万次阅读 2017-12-18 20:30:16
    Druid是一个非常好用的数据库连接池,但是他的好并不止体现在作为一个连接池加快数据访问性能上和连接管理上,他带有一个强大的监控工具:Druid Monitor。不仅可以监控数据源和慢查询,还可以监控Web应用、URI监控、...
  • Dubbo Monitor 配置

    2017-09-26 14:19:30
    1. Dubbo Monitor 下载 dubbo-monitor-simple-2.5.3-assembly.tar.gz 链接:http://pan.baidu.com/s/1gf88wDX 密码:ik7u 2. 配置原dubbo模块 在各模块的配置文件中加一行 dubbo:monitor protocol="registry"/> 3....
  • 配置Monitor

    千次阅读 2013-05-07 09:33:09
    Monitor 简介 • 创建定制Monitor • 配置Monitor 设置 • 特殊配置考虑因素 • 将Monitor 与pool 和节点关联 • 管理Monitor Monitor简介 BIG-IP®本地流量管理(LTM)系统的一个重要特性是称为Monitor ...
  • Memory Monitor

    万次阅读 2016-01-13 09:50:08
    Heap Viewer,Memory Monitor和Allocation Tracker是用来可视化你的app使用内存的补充工具。  使用Memory Monitor Tool来发现是否有不好的内存回收时间导致你的性能问题。  运行Heap Viewer来确定获取或者...
  • Windows API Monitor

    2019-08-22 09:25:43
    文章转自http://www.rohitab.com/apimonitor ...API Monitor v2 is currently in Alpha. Installers for both 32-bit and 64-bit versions are now available.Download Now. Save Capture and Moni...
  • Android Studio 3.0找不到Android Device Monitor

    万次阅读 多人点赞 2018-05-29 12:52:20
    为什么Android Studio 3.0中找不到Android Device Monitor? 因为自Android Studio 3.0开始弃用Android Device Monitor,Android Developers官网上的原话是: Android Device Monitor is a standalone tool that...
  • hostmonitor配置

    2019-09-18 08:26:39
    Host Monitor配置 简介 Host Monitor是KS-SOFT公司出品的一套网络监测工具,据官方网站的介绍,Host Monitor提供了56套测试工具和27种报警动作,能够定时监控目标主机上的任何TCP服务、UDP、网络连通状态(Ping)...
  • sql monitor简介

    千次阅读 2018-12-04 18:59:58
    Sql monitor 简介 11g 之后的版本 oracle 提供了一种实时 sql 监控工具,即 sql monitor 。默...
  • QEMU monitor控制台使用详解

    千次阅读 2020-05-22 16:05:27
    为什么要使用 QEMU monitor命令? 在前面学习ubuntu启动第一个虚拟机时,发现我们在使用启动QEMU之后,我们的终端会卡住。而现在我们在启动QEMU时使用了monitor,终端会进入monitor的控制台,通过这个控制台,我们...
  • Oracle SQL monitor

    2016-04-13 20:35:00
    Oracle SQL monitor  第一章 被埋没的SQL优化利器——Oracle SQL monitor DBAplus社群 | 2015-11-26 07:00 转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者...
  • Monitor Link

    千次阅读 2013-03-31 15:35:54
    图1 Monitor Link组成示意图  Monitor Link Monitor Link组也叫监控链路组,由上行链路和下行链路共同组成。一个组包含一个上行链路和若干个下行链路。 说明: 此处要注意Monitor Link组里的链路并不一定...
  • Kafka Monitor安装介绍

    千次阅读 2020-06-13 20:54:51
    Kafka Monitor是kafka的监控工具,安装简单,页面简单,主要是用来监控消费者和offset,对kafka集群的支持较少 上传jar包 mkdir kafka-offset-monitor cp KafkaOffsetMonitor-assembly-0.4.6-SNAPSHOT.jar /usr/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 331,915
精华内容 132,766
关键字:

monitor