上一页 1 2 3 4 5 6 ··· 33 下一页
摘要: CAS的全称是: Compare And Swap(比较再交换);它体现的一种乐观锁的思想,在无锁状态下保证线程操作数据的原子性。 具体实现流程是这样的:有一个当前内存值V,旧的预期值A,和即将更新的值B。当且仅当旧的预期值A与内存值V相同时,才会将内存值V改为B,并返回true,否则什么都不做,返 阅读全文
posted @ 2025-06-12 23:49 笠大 阅读(13) 评论(0) 推荐(0)
摘要: Java内存模型是Java虚拟机规范中定义的一种非常重要的内存模型。它的主要作用是描述Java程序中线程共享变量的访问规则,以及这些变量在JVM中是如何被存储和读取的,涉及到一些底层的细节。 这个模型有几个核心的特点。首先,所有的共享变量,包括实例变量和类变量,都被存储在主内存中,也就是计算机的RA 阅读全文
posted @ 2025-06-12 23:49 笠大 阅读(12) 评论(0) 推荐(0)
摘要: Java中的synchronized有偏向锁、轻量级锁、重量级锁三种形式,分别对应了锁只被一个线程持有、不同线程交替持有锁、多线程竞争锁三种情况。 重量级锁:底层使用的Monitor实现,里面涉及到了用户态和内核态的切换、进程的上下文切换,成本较高,性能比较低。 轻量级锁:线程加锁的时间是错开的(也 阅读全文
posted @ 2025-06-12 23:48 笠大 阅读(8) 评论(0) 推荐(0)
摘要: synchronized 底层使用的JVM级别中的Monitor 来决定当前线程是否获得了锁,如果某一个线程获得了锁,在没有释放锁之前,其他线程是不能或得到锁的。synchronized 属于悲观锁。 synchronized 因为需要依赖于JVM级别的Monitor ,相对性能也比较低。 moni 阅读全文
posted @ 2025-06-12 23:48 笠大 阅读(14) 评论(0) 推荐(0)
摘要: 有三种方式可以停止线程 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止 使用stop方法强行终止(不推荐,方法已作废) 使用interrupt方法中断线程 阅读全文
posted @ 2025-06-12 23:48 笠大 阅读(9) 评论(0) 推荐(0)
摘要: 共同点 wait() ,wait(long) 和 sleep(long) 的效果都是让当前线程暂时放弃 CPU 的使用权,进入阻塞状态 不同点 方法归属不同 sleep(long) 是 Thread 的静态方法 而 wait(),wait(long) 都是 Object 的成员方法,每个对象都有 醒 阅读全文
posted @ 2025-06-12 23:47 笠大 阅读(14) 评论(0) 推荐(0)
摘要: notifyAll:唤醒所有wait的线程 notify:只随机唤醒一个 wait 线程 阅读全文
posted @ 2025-06-12 23:47 笠大 阅读(19) 评论(0) 推荐(0)
摘要: 嗯~~,我思考一下 (适当的思考或想一下属于正常情况,脱口而出反而太假[背诵痕迹]) 可以这么做,在多线程中有多种方法让线程按特定顺序执行,可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。 比如说: 使用join方法,T3调用T2,T2调用T1,这样就能确保 阅读全文
posted @ 2025-06-12 23:46 笠大 阅读(12) 评论(0) 推荐(0)
摘要: 在JDK中的Thread类中的枚举State里面定义了6中线程的状态分别是:新建、可运行、终结、阻塞、等待和有时限等待六种。 关于线程的状态切换情况比较多。我分别介绍一下 当一个线程对象被创建,但还未调用 start 方法时处于新建状态,调用了 start 方法,就会由新建进入可运行状态。如果线程内 阅读全文
posted @ 2025-06-12 23:46 笠大 阅读(9) 评论(0) 推荐(0)
摘要: start(): 用来启动线程,通过该线程调用run方法执行run方法中所定义的逻辑代码。start方法只能被调用一次。 run(): 就是一个普通的方法,封装了要被线程执行的代码,可以被调用多次。 阅读全文
posted @ 2025-06-12 23:45 笠大 阅读(6) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 33 下一页