Monitor的原理

目录

一.java对象头

二.Monitor原理


一.java对象头

64 位虚拟机 Mark Word:
Normal:无锁状态
Biased:偏向锁状态
Lightweight Locked:轻量级锁
Heavyweight Locked:重量级锁
Marked for GC:标记为GC

二.Monitor原理

Monitor 被翻译为 监视器 管程
        每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级)之后,该对象头的 Mark Word 中就被设置指向 Monitor 对象的指针。
Monitor 结构如下:
(1)刚开始 Monitor Owner null
(2)当 Thread-2 执行 synchronized(obj) 就会将 Monitor 的所有者 Owner 置为 Thread-2 Monitor 中只能有一 个 Owner
(3)在 Thread-2 上锁的过程中,如果 Thread-3 Thread-4 Thread-5 也来执行 synchronized(obj) ,就会进入 EntryList BLOCKED
(4)Thread-2 执行完同步代码块的内容,然后唤醒 EntryList 中等待的线程来竞争锁,竞争的时是非公平的
(5)图中 WaitSet 中的 Thread-0 Thread-1 是之前获得过锁,但Owner 线程发现条件不满足,调用 wait 方法进入 WAITING 状态的线程。
(6)BLOCKED WAITING 的线程都处于阻塞状态,不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒。WAITING 线程会在 Owner 线程调用 notify notifyAll 时唤醒,但唤醒后并不意味者立刻获得锁,仍需进入 EntryList 重新竞争
Monitor Link 技术是一种用于网络链路监控和状态同步的机制,常用于提升如 Smart Link 等二层拓扑协议的可靠性与应用范围。其核心原理是通过监控上行链路的状态,并将该状态同步到下行链路,以确保网络拓扑的快速收敛和数据流量的不间断传输。 ### Monitor Link 的基本工作机制 Monitor Link 组由一个上行链路(Uplink)和若干个下行链路(Downlink)组成。上行链路是被监控的链路,而下行链路则根据上行链路的状态进行同步。如果上行链路发生故障,所有与之关联的下行链路将被强制设置为阻塞状态,以避免数据流量继续发送到不可达的路径上。相反,当下行链路发生故障时,不会影响上行链路的状态,也不会影响其他下行链路[^2]。 具体来说,当上行链路处于正常状态时,下行链路也会保持转发状态,允许数据流量通过。一旦检测到上行链路故障,Monitor Link 会立即将所有相关下行链路置为阻塞状态,以防止数据包丢失[^4]。 ### Monitor Link 与 Smart Link 的协同作用 Monitor Link 通常作为 Smart Link 的补充技术,用于解决 Smart Link 无法感知上行链路状态的问题。Smart Link 是一种二层链路备份技术,支持两个端口之间的快速切换,但其本身无法感知上行链路是否正常。通过引入 Monitor Link,可以监控上行链路状态,并在故障发生时通知 Smart Link 进行链路切换,从而实现更快速的故障恢复[^3]。 例如,在一个典型的组网中,Smart Link 的主端口(Master Port)负责数据转发,而备用端口(Slave Port)则处于待命状态。如果 Monitor Link 检测到上行链路故障,它会触发 Smart Link 进行端口切换,将数据转发任务转移到备用链路上,从而保证网络的连续性[^1]。 ### Monitor Link 的配置示例 在华为设备上,Monitor Link 的配置通常包括创建 Monitor Link 组、指定上行和下行端口、设置回切时间等。以下是一个典型的配置示例: ```bash <Huawei> system-view [Huawei] sysname SW2 [SW2] monitor-link group 1 [SW2-mtlk-group1] port GigabitEthernet 0/0/2 uplink [SW2-mtlk-group1] port GigabitEthernet 0/0/1 downlink 1 [SW2-mtlk-group1] timer recover-time 10 [SW2-mtlk-group1] interface GigabitEthernet 0/0/1 [SW2-GigabitEthernet0/0/1] smart-link flush receive control-vlan 10 password simple 333 [SW2-mtlk-group1] interface GigabitEthernet 0/0/2 [SW2-GigabitEthernet0/0/2] smart-link flush receive control-vlan 10 password simple 333 ``` 上述配置中,Monitor Link 组 1 包含一个上行端口 GE0/0/2 和一个下行端口 GE0/0/1。当下行端口接收到 Smart Link 的 Flush 帧时,会根据控制 VLAN 和密码进行验证并执行相应的操作[^5]。 ### Monitor Link 的应用场景 Monitor Link 常用于需要高可用性和快速故障恢复的网络环境中,特别是在数据中心、企业核心网络等对链路可靠性要求较高的场景中。它可以有效扩展 Smart Link 的应用范围,使其能够适应更复杂的网络拓扑结构[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值