
多线程&并发
文章平均质量分 59
多线程&并发
道法自然 实事求是
这个作者很懒,什么都没留下…
展开
-
synchronized实战:synchronized 锁升级过程
Java 中的synchronized锁升级过程实际上是锁的粗化(Coarsening)和锁的细化(Fine-grained Locking)之间的权衡过程。在这个示例中,有两个线程,一个使用粗粒度锁(CoarseLockTask),另一个使用细粒度锁(FineGrainedLockTask)。运行这个程序,你会看到两个线程的输出交错进行,其中细粒度锁的输出在粗粒度锁的输出中间。这演示了锁的升级过程,其中锁会根据实际执行情况在粗粒度和细粒度之间动态切换,以提高性能。这个示例只是为了演示锁升级的概念。原创 2023-09-17 17:53:25 · 157 阅读 · 0 评论 -
Java synchronized关键字常见面试题
对象级别的锁是通过synchronized修饰非静态方法或使用synchronized(this)语句块来实现的,锁定的是对象实例。类级别的锁是通过synchronized修饰静态方法或使用synchronized(Class.class)语句块来实现的,锁定的是类的Class对象。对象级别的锁只对同一个对象实例起作用,而类级别的锁对整个类的所有实例都起作用。可重入锁是一种允许同一个线程多次获得同一个锁的锁,而不会被自己所持有的锁所阻塞。原创 2023-09-17 17:09:09 · 348 阅读 · 0 评论 -
Java基础实战:Java中的引用类型(强软弱虚)
下面是一个在下面引用实战中用到的公共类finalize()方法是执行gc时调用的方法。原创 2023-09-17 16:55:17 · 144 阅读 · 0 评论 -
什么是Java中的“内存屏障“(Memory Barrier)?它们有什么作用?
内存屏障是一种用于控制内存访问顺序的指令。在多核处理器上运行的多线程程序可能会因处理器的乱序执行和缓存一致性问题而导致意外的行为。内存屏障可以用来强制某些操作的顺序,以确保线程间的正确协同。原创 2023-09-17 15:17:29 · 339 阅读 · 0 评论 -
voliate实战:voliate可见性验证&有序性&非原子性验证
下面的程序验证了voliate的可见性。原创 2023-09-17 12:00:00 · 272 阅读 · 0 评论 -
HashMap核心方法:put()、putVal()、resize()与treeifyBin()
put方法的源码如下:由此可见put的核心方法为putVal()putVal方法各参数值讲解:前面三个参数不做过多讲解,第4个参数是控制是否要覆盖原来key中已经存在的值,比如HashMap的putIfAbsent方法调的也是putVal方法,它的第4个参数传的值为true,因此putIfAbsent方法不会覆盖原有的值。原创 2023-09-09 10:45:38 · 419 阅读 · 0 评论 -
Java HashMap常见面试题
哈希冲突是指不同的键经过哈希函数计算后映射到了相同的索引位置。HashMap 使用链表或红黑树等数据结构来存储具有相同哈希值的键值对。当发生冲突时,新的键值对会被添加到链表或树中,而不会覆盖原有的键值对。原创 2023-09-07 12:14:07 · 299 阅读 · 0 评论 -
Java voliate关键字常见面试题
volatile 是 Java 中的关键字,用于声明一个变量是“易变”的,即可能被多个线程同时修改。它的主要作用是保证对该变量的读写操作具有可见性,即一个线程对该变量的修改对其他线程是可见的,同时禁止了编译器和运行时对指令的重排序。原创 2023-09-06 12:05:16 · 575 阅读 · 0 评论