![](https://img-blog.csdnimg.cn/20200504210142260.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JUC
java多线程
心扬
坐方圆之地,晓天下之事
展开
-
并发编程5.CAS
什么是CAScompare and swap以CAS的方式对属性private int value = 0; 进行递增操作读取 value 的值将其赋值给临时变量 a,此时 a = 0;从a中获取值进行计算,将所得结果赋值给变量b,此时 a = 0; b =1;重新读取value的值,与a进行比较如果两个值相等,则将b中的值写入到value中如果不相等,则从头开始读取value的,赋值给a,计算,再进行读取比较,知道赋值成功为止!graph LRA[读取 value 的值]--&原创 2020-05-26 20:27:37 · 135 阅读 · 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 · 126 阅读 · 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 · 138 阅读 · 0 评论 -
并发编程2.Thread核心方法
两种线程实现方式没有区别在java中,有实现Runnable接口和集成Thread类两种实现线程的方式,但是在线程的运行过程中,这两种实现方式并没有区别,因为在最终启动线程时,都需要调用Thread类对象的start方法。核心方式currentThreadcurrentThread方法用于获取当前正在执行的线程,即当前代码段正在被哪个线程调用Thread.currentThread()isAliveisAlive方法用于判断当前线程是否处于存活状态public static void ma原创 2020-05-10 12:46:03 · 199 阅读 · 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 · 318 阅读 · 0 评论