![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
幼儿园的东东小盆友
这个作者很懒,什么都没留下…
展开
-
AtomicInteger实现多线程安全
CAS => 比较并交换,乐观锁import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;public class TestUnSafe { private static AtomicInteger lock = new AtomicInteger(1); private static int number = 0; public原创 2020-10-10 10:31:39 · 201 阅读 · 0 评论 -
手动仿CAS实现2个线程交替打印
学到volatile关键字,忽然想是不是可以通过volatile关键字来实现一个双线程交替打印呢,所以就写了这个,因为还是萌新,所以若有错还请评论告知import java.util.ArrayList;import java.util.List;public class MyCAS { private volatile static int lock1 = 1; private volatile static int lock2 = 1; public static vo原创 2020-10-09 23:16:42 · 278 阅读 · 0 评论 -
volatile实现的双线程安全
为什么只能双线程安全呢,因为我们不能保证lock != 1的判断同一时间只有一个线程可以执行成功,这里可以用到unsafe类了,那么可能同时有多个线程都判断成功了 lock != 1的条件,从而全部进入循环。而双线程肯定每次都是一个锁住了,一个解锁了import java.util.ArrayList;import java.util.List;public class MyCAS { private volatile static int lock = 1; private vo原创 2020-10-09 23:05:18 · 167 阅读 · 2 评论 -
虚拟机初始化一个类的过程
虚拟机初始化一个类的过程public class Static { private static int num = 1; static { num = 2; number = 20; } private static int number = 20; //linking(链接)之前有prepare(准备)环节就已经初始化为0了 //静态的东西都是在类加到环境虚拟机时初始化的 //下面就是错误的 /*x原创 2020-05-13 09:52:22 · 99 阅读 · 0 评论 -
java的死锁问题
/** * 用sleep仅仅是增加的死锁的概率,不用sleep线程照样会有死锁 * 出现了死锁问题,当第一个线程锁住了sb1并且sleep时, * 第二个线程锁住了sb2, * 然后sb1一直在等线程2释放sb2锁, * 同样sb2一直在等线程1释放sb1锁, * 这就产生了死锁情况 */public class TestDeadLock { public static ...原创 2020-04-11 11:19:10 · 92 阅读 · 0 评论