this原理

原理一 与函数调用结合

    当一个函数在执行的时候:会创建一个上下文对象,会产生局部作用域
    上下文对象中,函数是被谁调用的;在哪调用的;参数是什么等信息
    this 就是记录一个属性 :在函数被调用时候产生

    函数调用有几种方式
    new
    对象调用
    事件调用
    call,apply或bind

原理二:结合作用域看this

    问题:为什么return 返回 伪对象 数组 函数 this就不指向new 实例化的对象
    原理:函数在执行时候会创建局部作用域:this
    创建一个对象,就是将构造函数的作用域赋给了新对象;
    所以this 指向了这个对象,return {}, [],function 之后;
    改变了作用域,作用域赋值给了 {} function [] 所以this指向{} [] function
### synchronized 关键字与 this 的关系及其实现原理 #### 1. 基本概念 `synchronized` 是 Java 提供的一种内置锁机制,用于确保同一时间只有一个线程可以执行被标记的方法或代码块。当 `synchronized` 使用 `this` 作为锁定对象时,表示该锁的作用范围仅限于当前实例对象[^1]。 #### 2. 工作机制 `synchronized` 实际上依赖 JVM 的 Monitor(监视器)来实现线程间的同步。Monitor 可以看作是一个互斥锁,在任何时刻只允许一个线程持有它。以下是具体的工作流程: - 当某个线程尝试进入由 `synchronized` 定义的临界区时,JVM 首先会检查目标对象(即 `this` 对象)上的锁状态。 - 如果目标对象未被加锁,则当前线程成功获取锁并继续运行;如果已被其他线程占用,则当前线程会被阻塞直到锁释放[^3]。 #### 3. 使用 `this` 的场景分析 在实际开发中,`synchronized` 经常配合 `this` 来保护类内部的状态一致性。例如以下代码片段展示了如何利用 `this` 进行同步操作: ```java public class Counter { private int count = 0; public synchronized void increment() { // 锁定对象为 this count++; } public synchronized int getCount() { // 同样锁定的是 this return count; } } ``` 在此例子中,两个方法都声明为 `synchronized` 并隐含地使用了 `this` 作为锁对象。这意味着在同一时间内最多只能有一个线程调用这些方法之一,从而避免并发修改带来的问题[^2]。 #### 4. 性能考量与注意事项 虽然 `synchronized` 能有效保障线程安全性,但它也可能带来一定的性能开销。这是因为每次争抢锁都会涉及上下文切换和其他系统级操作。因此,在设计程序时应尽量缩小同步区域大小,并考虑是否有更轻量化的替代方案如 ReentrantLock 等[^3]。 另外值得注意的一点是关于死锁的风险管理——不当的设计可能导致多个线程互相等待对方持有的资源而陷入僵局。所以建议遵循良好的编程习惯,比如始终按照固定的顺序获取不同类型的锁等措施减少此类隐患的发生几率。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值