自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(3)
  • 收藏
  • 关注

原创 你知道死锁,但是你知道活锁吗?

说来也是有趣,我完全是被代码带笑了。 什么是活锁? 线程没有阻塞,始终在运行,但是程序始终得不到进展,因为线程始终做重复的同样的事情。 假设有这样一堆恩爱夫妻,贫困年代,大家条件不好,有了吃的互相谦让,过于谦让,一张纸谦让,就会导致活锁。就是线程一直在运行,事情却没有任何进展。 和死锁相比,活锁更害人,因为活锁一直在消耗CPU资源,而死锁会阻塞。 定义一个 勺子类: static class Sp...

2020-02-15 22:01:57 219

原创 从Happens-before 原则说volatile和synchronized

什么是Happens-before ? 1.)Happens-before 规则是用来解决可见性问题的:在时间上,动作A发生在动作B之前,B保证能看见A,这就是Happens-before 原则。 2.)如果一个操作Happens-before 第二个操作,那么我们就说第一个操作对于第二个操作是可见的。 什么不是Happens-before ? 两个线程没有相互配合的机制,所以代码X和Y的执行结果...

2020-02-15 14:14:14 232

原创 一段代码演示代码重排序带来的影响

假设在类中,定义这样的4个变量。 private static int x = 0, y = 0; private static int a = 0, b = 0; 两行代码分别由两个线程进行如下的操作。 线程1: a = 1; x = b; 线程2: b = 1; y = a; 在一般的情况下,由于两个线程的快慢顺序前后顺序,均可能出现如下情况。 发生碰撞:a=...

2020-02-15 10:34:00 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除