
JUC
java多线程
心扬
坐方圆之地,晓天下之事
展开
-
并发编程5.CAS
什么是CAS compare and swap 以CAS的方式对属性private int value = 0; 进行递增操作 读取 value 的值 将其赋值给临时变量 a,此时 a = 0; 从a中获取值进行计算,将所得结果赋值给变量b,此时 a = 0; b =1; 重新读取value的值,与a进行比较 如果两个值相等,则将b中的值写入到value中 如果不相等,则从头开始读取value的,赋值给a,计算,再进行读取比较,知道赋值成功为止! graph LR A[读取 value 的值]--&原创 2020-05-26 20:27:37 · 171 阅读 · 0 评论 -
并发编程4.synchronized
线程安全问题 所谓线程安全问题,即多个线程同时对同一个变量或者资源进行读写操作而产生 脏读 的问题。 为什么会出现线程安全问题呢?我们首先要明确程序修改变量的逻辑 public class Sequcence { private int value; public int getNextValue(){ return value++; } public int getValue(){ return value; } p原创 2020-05-22 23:02:36 · 163 阅读 · 0 评论 -
并发编程3.线程的生命周期
线程状态的定义 线程对象在不同的运行时期有不同的状态,这些状态就定义在java.lang.Thread.State枚举类中 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } 线程状态的解释 尚未启动的线程处于NEW状态 在JVM中执行的线程处于RUNNABLE 状态 受阻塞并 等待某个监视器锁的线程处于BLOCKED 状态 等待另一个线程来执行原创 2020-05-10 15:58:43 · 180 阅读 · 0 评论 -
并发编程2.Thread核心方法
两种线程实现方式没有区别 在java中,有实现Runnable接口和集成Thread类两种实现线程的方式,但是在线程的运行过程中,这两种实现方式并没有区别,因为在最终启动线程时,都需要调用Thread类对象的start方法。 核心方式 currentThread currentThread方法用于获取当前正在执行的线程,即当前代码段正在被哪个线程调用 Thread.currentThread() isAlive isAlive方法用于判断当前线程是否处于存活状态 public static void ma原创 2020-05-10 12:46:03 · 242 阅读 · 0 评论 -
并发编程1.创建启动线程
线程的创建方式 在java中,提供了java.lang.Thread类和java.lang.Runnable接口,来创建线程 继承java.lang.Thread,实现run方法 public class ExtendsThreadSample extends Thread{ @Override public void run() { System.out.pri...原创 2020-05-07 15:57:32 · 350 阅读 · 0 评论