java并发编程
文章平均质量分 90
gaogao1874
这个作者很懒,什么都没留下…
展开
-
并发编程(一)多线程基础
多线程使用场景1、通过并行计算提高程序执行性能2、需要等待网络、I/O 响应导致耗费大量的执行时间,可以采用异步线程的方 式来减少阻塞创建多线程在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。1、继承 Thread 类创建线程...原创 2018-08-16 19:49:33 · 216 阅读 · 0 评论 -
并发编程(二)缓存一致性与JMM
CPU高速缓存线程是CPU调度的最小单元,线程涉及的目的最终仍然是更充分的利用计算机处理的效能,但是绝大部分的运算任务不能只依靠处理器“计算”就能完成,处 理器还需要与内存交互,比如读取运算数据、存储运算结果,这个I/O操作是很难消除的。 而由于计算机的存储设备与处理器的运算速度差距非常大,所以现代计算机系统都会增加一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存和处理器之间的缓冲...原创 2018-08-28 14:55:22 · 723 阅读 · 0 评论 -
并发编程(四)synchronized
synchronized 关键字synchronized关键字是Java 1.0就有的语法元素。在Java中,所有的object实例(class也是一种object)都可以作为多线程环境下得竞争资源,所以每个oject上都有一个锁的标记,在执行关键代码的时候,对非null的object加上synchronize关键字,标记一个代码块,可以自动对某个对象加解锁。 在多线程并发编程中synchr...原创 2018-09-12 21:28:47 · 148 阅读 · 0 评论 -
并发编程(三)volatile与内存屏障
Java通过几种原子操作完成工作内存和主内存的交互:lock:作用于主内存,把变量标识为线程独占状态。 unlock:作用于主内存,解除独占状态。 read:作用主内存,把一个变量的值从主内存传输到线程的工作内存。 load:作用于工作内存,把read操作传过来的变量值放入工作内存的变量副本中。 use:作用工作内存,把工作内存当中的一个变量值传给执行引擎。 assign:作用工作内...原创 2018-09-10 20:52:47 · 1119 阅读 · 0 评论 -
并发编程(五)AQS内部实现
同步锁锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,在Lock接口出现之前,Java应用程序只能依靠synchronized关键字来实现同步锁的功能,在java5以后,增加了JUC的并发包且提供了Lock接口用来实现锁的功能,它提供了与synchroinzed关键字类似的同步功能,只是它比 synchronized更灵活,能够显示的获取和释放锁。...原创 2018-09-19 13:52:40 · 1018 阅读 · 0 评论