
并发
文章平均质量分 88
并发编程
冯佳兴
一名非常热爱计算机的 Boy,技术是一门哲学,愿意和我一起研究新的技术吗?
本人坚持自主学习,站在巨人肩膀上学习,善于分享。
我会经常分享系列基础博客,希望大家喜欢,有什么问题记得关注留言哦!
展开
-
【Java 并发编程】 06 从底层解读万能的 synchronized
synchronized上一篇 【Java 并发编程】 05 一个能和面试官扯很久的 volatile 关键字 中讲到了 volatile 可以解决线程并发执行中可见性和有序性问题。 在【Java 并发编程】 07 线程安全 中简单介绍了可以通过 CAS 解决原子性问题。volatile 关键字和 乐观锁只能解决特定的问题,那有没有一种方法可以解决这些统一的问题呢? 万恶的 Bug 起源—并发编程的三大特性 有,有请我们今天的主角闪亮登场 synchronized 关键字synchronized 关键原创 2020-05-17 16:41:49 · 250 阅读 · 0 评论 -
【Java 并发编程】 07 线程安全
什么是线程安全呢?线程安全并非“线程安全”,大家不要望文生义,所谓的线程安全其实指的是内存的安全,随着操作系统的发展,不再是单核CPU,而是多核多任务,也就意味的进程的并发执行,回想一下是不是可以一边敲着代码,一边听着歌,此时问题来了,为什么这两个进程互不影响呢?操作系统对此做了一系列的保障,是的每一个进程有自己的一块内存空间,进程之间是隔离的,彼此不能互相访问。每个进程有自己的一块特殊公共的区域,称为堆内存,既然是公共区域,那么一个进程里面的多个线程都可访问的到,这也就是 bug 的起源。一个线程访问原创 2020-05-17 12:00:26 · 318 阅读 · 0 评论 -
【Java 并发编程】 01 多线程的实现
常用的实现多线程的2种方式:继承 Thread 或者实现 Runanable 接口Thread 类 实现了 Runnable 接口public class Thread implements Runnable {}//继承 Thread 类public class MyThread extends Thread { /* static Thread currentThread(),返回正在执行的线程对象的引用 public static void sleep(l原创 2020-05-16 18:27:28 · 322 阅读 · 1 评论 -
【Java 并发编程】 02 线程的生命周期(线程状态之间的转换)
如果对并发编程状态不是很了解的同学,我们可以回想一下操作系统原理关于进程的生命周期的学习,学习操作系统原理的同学都知道,进程也有自己的生命周期,进程可大致分为三种状态,以及三种状态之间的转变, ???? 操作系统—进程。三种状态执行态:CPU正在运行的状态就绪态:一旦获得CPU就可以运行的状态。一句话总结;完事具备,只欠东风(CPU)阻塞态:进程等待资源或某个事件的发生而暂停的状态。状态间转换阻塞态 ???? 就绪态(唤醒过程)执行态 ???? 就绪态(因为是分时操作,当时间片用完,执行原创 2020-05-16 17:28:32 · 443 阅读 · 0 评论 -
【Java 并发编程】 05 一个能和面试官扯很久的 volatile 关键字
上一篇我们在Java内存模型中(JMM)中 Happens-before 中讲到了volatile原则,对于volatile变量的写操作会早于对其的读操作。 volatile 意思就是可见的,常用来修饰某个共享变量,意思是当共享变量的值被修改后,会及时通知到其它线程上,其它线程就能知道当前共享变量的值已经被修改了。volatile 关键字用来修饰实例变量和类变量。被 volatile 修饰后的变量可以解决并发编程可见性和有序性问题。但是不能保证原子性,且volatile 只能作用于实例或者类变量,不能修饰原创 2020-05-13 15:58:06 · 300 阅读 · 0 评论 -
【Java 并发编程】 04 JMM内存模型解决有序性和可见性问题
Java内存模型,即 JMM (Java Memory Model),JMM 是一种规范,它规范了 JVM 运行的行为,多线程操作对共享内存读取时,所能读取到的值应该遵守的规则。提供了一些解决可见性和有序性问题的方法例如 volatile、synchronized 和 final 三个关键字。JMM为程序中的所有操作定义了一定的规则,叫做Happens-Before 规则**Happens-Before 规则 解决了有序性和可见性的问题,如果你想保证你代码执行顺序不变(即有序性),你就需要遵守 Hap原创 2020-05-13 11:56:52 · 314 阅读 · 0 评论 -
【Java 并发编程】 03 万恶的 Bug 起源—并发编程的三大特性
今天让我们一起走进并发编程中万恶的Bug起源—并发编程中三大特性。今天学习目标如下:并发编程的三大特性都要哪些 ?并发编程三大特性的由来?如何解决并发编程三大特性问题?一张导图概览全文基本概念原子性:一组操作要么全部成功,要么全部失败。可见性:一个线程对变量进行了修改,另外一个线程能够立刻读取到此变量的最新值。有序性:代码执行顺序并不一定和你编写的顺序一致。为什么会有并发编程的三大特性呢?话说女娲补天,精卫填海 …一直到上世纪60年代英特尔创始人戈登·摩尔讲的:“集成电路上可容纳的原创 2020-05-13 11:13:59 · 357 阅读 · 0 评论