AbMole| Leukadherin-1(CAS号344897-95-6;目录号M6905)

Leukadherin-1是白细胞表面整合素(integrin)CD11b/CD18的变构激活因子。

生物活性

Leukadherin-1是白细胞表面整合素(integrin)CD11b/CD18的变构激活因子,增加CD11b/ cd18依赖性细胞与纤维蛋白原的粘连(EC50 = 4 μM)。Leukadherin-1 还能激活补体受体3 (CR3),并促进CR3依赖的白细胞粘附在纤维蛋白原包覆的表面。Leukadherin-1 抑制先天性炎症信号转导。

Leukadherin-1(1 毫克/千克;静注;每天两次,连续 14 天)对预防高氧诱导的肺损伤(一种支气管肺发育不良的实验模型)有益。

实验参考
体外实验*
细胞系NK cells
方法NK cell stimuli (where used) were added as follows: (1) Syk inhibitor (1 μM), (2) Leukadherin-1 or dimethylsulphoxide (DMSO) (vector control) (7.5 μM). Shown to induce ∼82% of maximum response with negligible off-target effect, (3) anti-CD210 or isotype control (5 µg/ml), (4) 30-45 min after Leukadherin‐1 NK cells were stimulated with combinations of IL-12 (10 ng/ml), IL-15 (30 ng/ml) or IL-18 (10 ng/ml): either IL-12 + IL-15 or IL-12 + IL-18. Monocytes were stimulated using pam3csk4 (TLR-2 agonist, 300 ng/ml) or R848 (TLR-7/8 agonist, 2 µg/ml). Supernatants were stored at −80ºC for < 1 month before quantification. To exclude non-specific Leukadherin-1-mediated cytotoxicity, cell viability is assessed at 24 h using the CellTitre-Glo reagent.
浓度7.5 μM
处理时间30-45 min

*上述方法来自公开文献,仅供相同目的实验参考。如实验目的、材料、方法不同,请参考其他文献。

体内实验*
动物模型Male C57BL/6J (H-2b) and Balb/cJ (H-2d) mice
配制cyclosporine
剂量1 mg/kg or 2.5 mg/kg
给药处理i.v. or i.p.

*上述方法来自公开文献,仅供相同目的实验参考。如实验目的、材料、方法不同,请参考其他文献。

化学性质
分子量421.49
分子式C22H15NO4S2
CAS号344897-95-6
溶解性(25°C)DMSO 4 mg/mL (with gentle warming)
储存条件粉末型式       -20°C   3年;4°C   2年
溶于溶剂       -80°C   6个月;-20°C   1个月
运输方式冰袋运输,根据产品的不同,可能会有相应调整。
储备液配制

*下述溶液配置方法仅为基于分子量计算出的理论值。不同产品在配置溶液前,需考虑其在不同溶剂中的溶解度限制。

浓度/溶剂体积/质量1 mg5 mg10 mg
1 mM2.3725 mL11.8627 mL23.7254 mL
5 mM0.4745 mL2.3725 mL4.7451 mL
10 mM0.2373 mL1.1863 mL2.3725 mL

参考文献
[1] Yamamoto, et al. J Pharmacol Exp Ther. The angiotensin IV analog Nle-Tyr-Leu-psi-(CH2-NH2)3-4-His-Pro-Phe (norleual) can act as a hepatocyte growth factor/c-Met inhibitor.

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
<think>我们被要求将Java线程获取synchronized锁的过程(包括无锁、偏向锁、轻量级锁、自旋和重量级锁的转换)转换为流程图。我们将根据提供的引用(特别是引用[2]和引用[3])来构建这个流程。 步骤: 1. 首先,我们需要理解锁的状态转换过程。根据引用[3],锁的状态转换是无锁 → 偏向锁 → 轻量级锁 → 重量级锁。 2. 引用[2]详细描述了偏向锁的获取和升级情况,以及轻量级锁的获取和升级情况。 3. 我们还需要考虑自旋,虽然自旋不是一种锁状态,但它是轻量级锁在竞争时的一种优化策略(在升级为重量级锁之前可能会尝试自旋)。 根据引用[3]和引用[2],我们可以总结出以下步骤: - 当线程进入同步块时,首先检查锁对象的Mark Word。 - 判断锁标志位,根据不同的标志位进入不同的锁状态处理。 锁标志位(最后2位): 01:无锁或偏向锁(需要看前面的偏向锁标志) 00:轻量级锁 10:重量级锁 具体流程: 1. 初始状态:锁对象刚创建时,是无锁状态(01,且偏向锁标志为0)。 2. 当第一个线程访问同步块时,会尝试使用CAS将线程ID设置到Mark Word中,并将偏向锁标志置为1,进入偏向锁状态(101)。 3. 当同一个线程再次进入同步块(重入),因为线程ID是自己的,所以直接进入,无需任何操作。 4. 当另一个线程尝试获取锁时,发现偏向锁指向的是其他线程,那么会检查原来持有偏向锁的线程是否还存活或者已经退出同步代码块: a. 如果原持有线程已经退出同步块(即不再需要该锁),则撤销偏向锁,恢复到无锁状态(01),然后新线程通过CAS竞争偏向锁(将偏向锁指向自己)。 b. 如果原持有线程还在同步块中,则撤销偏向锁,升级为轻量级锁(00)。此时,原持有线程会继续执行,而新线程会在栈帧中创建锁记录(Lock Record),并通过CAS将锁对象的Mark Word替换为指向锁记录的指针。如果成功,则新线程获得轻量级锁。 5. 在轻量级锁状态下,如果有两个以上的线程竞争(即多个线程同时竞争同一个锁),或者同一个线程多次CAS失败(说明有竞争),那么轻量级锁会升级为重量级锁(10)。 在升级过程中,会进行自旋优化(在轻量级锁升级为重量级锁之前,线程可能会进行自旋等待,以避免直接进入重量级锁的阻塞状态)。自旋成功则获得锁,自旋失败则升级为重量级锁。 6. 重量级锁会使用操作系统的互斥量(Mutex)来实现,此时未获得锁的线程会被阻塞,进入等待队列(如EntryList、WaitSet等)。 注意:自旋发生在轻量级锁竞争失败后,升级为重量级锁之前。在重量级锁状态下,等待锁的线程不会自旋,而是被阻塞。 流程图如下(使用文字描述流程,然后我们可以用mermaid代码表示): 开始 -> 检查锁对象Mark Word 如果锁标志位是01(无锁或偏向锁): 检查偏向锁标志(第3位,注意:Mark Word的结构在不同位上有不同含义): 如果是0(无锁): 使用CAS尝试获取偏向锁(将线程ID写入Mark Word,并将偏向锁标志置1) 如果成功,则进入偏向锁状态(101) 否则,说明有竞争,进入轻量级锁获取流程(此时需要撤销偏向锁,升级为轻量级锁) 如果是1(偏向锁): 检查Mark Word中的线程ID是否当前线程: 如果是,则直接进入同步块(重入) 如果不是,则检查原持有偏向锁的线程是否还存活并且还在同步块中(通过遍历线程栈的锁记录): 如果原线程已经退出同步块,则撤销偏向锁(恢复到无锁状态),然后当前线程重新尝试获取偏向锁(CAS设置线程ID) 如果原线程还在同步块中,则撤销偏向锁,升级为轻量级锁(00),然后当前线程通过CAS竞争轻量级锁(将锁对象头替换为指向当前线程栈中锁记录的指针) 如果锁标志位是00(轻量级锁): 当前线程尝试使用CAS将锁对象头的Mark Word替换为指向自己栈帧中锁记录的指针 如果成功,则获取轻量级锁,进入同步块 如果失败,则说明有竞争(可能是多个线程竞争): 先进行自旋(循环尝试CAS)一定次数(自适应自旋): 如果自旋期间成功获得锁,则继续执行 如果自旋失败,则升级为重量级锁(10) 如果锁标志位是10(重量级锁): 线程进入阻塞状态,等待操作系统互斥量(Mutex)的唤醒 注意:在轻量级锁状态下,如果发生竞争(CAS失败),会先尝试自旋,自旋失败再升级为重量级锁。自旋的次数可以通过JVM参数调整,并且JDK6以后引入了自适应自旋。 另外,在锁升级过程中,锁对象的Mark Word会发生变化,同时会涉及锁撤销操作。 根据以上逻辑,我们可以绘制流程图(使用mermaid的flowchart TD语法)。 注意:由于自旋是在轻量级锁竞争失败后进行的,所以我们在轻量级锁获取失败后加入自旋步骤。 流程图代码:</think>### Java线程获取synchronized锁的完整流程图 ```mermaid flowchart TD Start([线程尝试进入synchronized块]) --> CheckMarkWord[检查对象头Mark Word] CheckMarkWord --> LockFlag01{锁标志位=01?} LockFlag01 -->|| BiasedFlag{偏向锁标志=1?} LockFlag01 -->|| LockFlag00{锁标志位=00?} LockFlag01 -->|| LockFlag10{锁标志位=10?} %% === 偏向锁路径 === BiasedFlag -->|| CheckThreadID{线程ID匹配?} BiasedFlag -->|| SetupBias[设置偏向锁: 创建Lock Record存储Mark Word副本] SetupBias --> CAS_Bias[尝试CAS设置线程ID到Mark Word] CAS_Bias -->|成功| EnterBiased[进入偏向锁状态, 执行同步代码] CAS_Bias -->|失败| RevokeBias[撤销偏向锁] CheckThreadID -->|| EnterBiased CheckThreadID -->|| CheckRevoke[检查原持有线程状态] CheckRevoke -->|已退出| ReBias[尝试重新偏向: CAS设置新线程ID] CheckRevoke -->|仍活跃| UpgradeLight[升级为轻量级锁] %% === 轻量级锁路径 === LockFlag00 -->|| CheckOwner[检查锁记录指针] CheckOwner -->|当前线程| Reenter[锁重入: 增加锁记录计数] CheckOwner -->|其他线程| SpinLock[开始自旋等待] SpinLock --> SpinSuccess{自旋成功?} SpinSpinSuccess -->|| EnterLight[进入轻量级锁状态] SpinSuccess -->|| UpgradeHeavy[升级为重量级锁] %% === 重量级锁路径 === LockFlag10 -->|| EnterMonitor[进入重量级锁状态] EnterMonitor --> CheckEntry[检查Monitor的_EntryList] CheckEntry -->|空闲| AcquireMonitor[获取Monitor锁] CheckEntry -->|竞争| BlockThread[线程阻塞进入_WaitSet] %% === 无锁路径 === SetupBias -->|无锁状态| InitialLock[初始化锁] InitialLock -->|首次获取| SetBias[设置偏向锁] InitialLock -->|禁用偏向| SetupLight[直接设置轻量级锁] %% === 状态转换点 === RevokeBias --> UpgradeLight UpgradeLight --> SetupLight[创建Lock Record, CAS设置锁记录指针] SetupLight -->|成功| EnterLight SetupLight -->|失败| SpinLock EnterLight --> HeavyContention{发生竞争?} HeavyContention -->|| UpgradeHeavy HeavyContention -->|| SyncCode[执行同步代码] UpgradeHeavy --> CreateMonitor[创建Monitor对象] CreateMonitor --> SetHeavy[设置Mark Word指向Monitor] SetHeavy --> EnterMonitor %% === 最终状态 === EnterBiased --> SyncCode EnterLight --> SyncCode AcquireMonitor --> SyncCode SyncCode --> ExitLock[退出同步块] ExitLock -->|偏向锁| ClearBias[不清除线程ID, 保留偏向状态] ExitLock -->|轻量级锁| CAS_Reset[CAS恢复Mark Word] ExitLock -->|重量级锁| ReleaseMonitor[释放Monitor, 唤醒等待线程] ``` ### 流程详解与关键节点说明 #### 1. **初始检查阶段** - **锁标志位检测**:线程首先检查对象头Mark Word的锁标志位(最后2位)[^3]: - `01`:无锁或偏向锁 → 进入偏向锁判断 - `00`:轻量级锁 → 进入轻量级锁流程 - `10`:重量级锁 → 直接进入Monitor队列 - **偏向锁标志检测**:当标志位为`01`时,检查第3位偏向锁标志: - `1`:偏向锁生效 → 验证线程ID - `0`:无锁状态 → 尝试获取偏向锁 #### 2. **偏向锁处理** - **线程ID匹配**:检查Mark Word中的线程ID是否与当前线程一致[^2]: - 匹配:直接进入同步代码(锁重入) - 不匹配:检查原持有线程状态 - **偏向锁撤销**:当其他线程竞争时: - 原线程已退出:尝试CAS重偏向(新线程ID写入Mark Word) - 原线程仍活跃:升级为轻量级锁 #### 3. **轻量级锁处理** - **锁记录创建**:在栈帧创建Lock Record存储原Mark Word副本[^4] - **CAS竞争**:尝试将Mark Word替换为指向锁记录的指针: ```java // 伪代码实现 do { expected = markWord; // 当前Mark Word值 newLockRecord.address = expected; newValue = &lockRecord; // 指向锁记录的指针 } while (!CAS(markWord, expected, newValue)); ``` - **自旋优化**:CAS失败时自旋重试(默认次数10-50次)[^3]: - 成功:保持轻量级锁状态 - 失败:升级重量级锁 #### 4. **重量级锁处理** - **Monitor创建**:JVM创建ObjectMonitor对象[^3] - **线程阻塞**:竞争失败的线程进入_WaitSet队列 - **锁释放流程**: ```java void exitSync() { if (isHeavyLock) { monitor._owner = null; // 清除所有者 notify _EntryList; // 唤醒等待线程 } } ``` #### 5. **锁升级触发条件** | 当前状态 | 触发条件 | 升级目标 | |----------|----------|----------| | **偏向锁** | 两个以上线程竞争 | 轻量级锁 | | **轻量级锁** | 自旋失败或竞争加剧 | 重量级锁 | | **无锁** | 禁用偏向锁(-XX:-UseBiasedLocking) | 直接轻量级锁 | > 锁降级在synchronized中不会发生,这是与ReentrantLock的关键区别[^1] ### 性能优化建议 1. **偏向锁延迟**:通过`-XX:BiasedLockingStartupDelay=0`立即启用 2. **自旋调优**:设置最大自旋次数`-XX:PreBlockSpin=15` 3. **监控工具**: ```bash # 查看锁竞争情况 jstack <pid> | grep -A 10 "Monitor" ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值