CAS

Java中的synchronized是一种悲观锁,悲观锁始终假设会发生并发冲突,因此会阻止一切可能违反数据完整性的操作。而CAS是一种乐观锁CAS全称是CompareandSwap。乐观锁假设不会发生
2020年03月15日 137次浏览

Java 内存模型 JMM 与 volatile

Java内存模型(JavaMemoryModel,简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规范或者规则,通过这种规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)
2020年03月15日 204次浏览

synchronized 和 ReentrantLock

在Java5之前,只有synchronized一种锁,在Java5之后,增加了ReentrantLock。ReentrantLock位于java.util.concurrent.locks包,和Cou
2020年03月15日 159次浏览

Synchronized 底层实现原理

实现synchronized的基础有两个:Java对象头和Monitor。在虚拟机规范中定义了对象在内存中的布局,主要由以下3部分组成:对象头实例数据对齐填充而synchronized的实现就藏在对象
2020年03月14日 168次浏览

Java 中的 synchronized 关键字

synchronized关键字是为了解决线程安全问题的。我们先来了解下解决线程安全问题的主要诱因。线程安全问题的主要诱因有两点:存在共享数据(也称为临界资源)存在多条线程共同操作这些共享数据要解决线程
2020年03月14日 113次浏览

如何中断线程

先来说以下已经被抛弃的用于中断线程的方法:通过调用stop()方法停止线程这种方法是不安全的。比如线程A调用线程B的stop()方法去停止B线程,但是线程A是不知道线程B的执行情况的,这种突然的停止会
2020年03月14日 152次浏览

Thread.yield()函数

当调用Thread中的yield()函数时,会给线程调度器一个当前线程愿意让出CPU使用权的提示,但是线程调度器可能会忽略这个暗示。也就是线程调度器可能会继续执行该线程,也可能暂停这个线程。如下例子:
2020年03月14日 132次浏览

sleep() 和 wait() 的区别,以及 notify() 和 notifyall() 的区别

sleep()是Thread类的方法,wait()是Object类的方法sleep()方法可以在任何地方使用。wait()方法只能在synchronized方法或者synchronized块中使用最主
2020年03月13日 125次浏览

线程的状态

Java里的线程有6个状态,这6个状态与操作系统的里线程的状态有部分差异,原因是Java对操作系统的线程做了封装,下面来说说Java线程的状态和对应的操作系统的线程的状态。新建(New):创建后尚未启
2020年03月13日 128次浏览

如何实现处理线程的返回值

如何给run方法传参构造函数传参成员变量传参回调函数传参如何实现处理线程的返回值循环等待法:让主线程循环等待,直到目标线程返回值为止。需要自己实现循环等待的逻辑,如果等待的变量比较多,代码就会显得臃肿
2020年03月11日 137次浏览