多线程
绿色藤蔓
java攻城狮
展开
-
Java线程(一):synchronized
一、什么时候会出现线程安全问题?当多个线程同时访问一个资源(共享资源)时会出现线程安全。资源可以是一个变量、一个对象、一个文件、一个数据库表等。需要注意的是如果多个程序同时访问一个方法,定义在方法内部的局部变量并不是临界资源(共享资源),因为方法是在栈中执行的,而栈是线程私有的,因此不会出现线程安全问题。二、如何解决线程安全问题?通常来说在通过对访问共享资源代码加锁,当一个线程来访问时原创 2017-10-22 11:38:39 · 170 阅读 · 0 评论 -
Java线程(二):Lock
一、为什么出现Lock?我们知道java中有synchronized可以有效的解决并发引起的共享资源线程安全问题,但是synchronized存在一些缺陷。1)当使用synchronized时线程获取的锁已经被占用只能等待其他线程释放锁资源。而Lock可以只等待一定的时间或者能够响应中断。 2)当多个线程进行读写操作时,读写操作会冲突,写写操作会冲突,但是读读操作不会冲突,如果原创 2017-10-22 22:26:13 · 212 阅读 · 0 评论 -
java多线程之fork/join
1、fork join是什么? Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。fork join流程图2、怎么使用fork/join3、工作窃取算法工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。工作窃取的运行流原创 2017-10-15 20:12:45 · 840 阅读 · 0 评论 -
Java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,转载 2017-11-21 09:36:15 · 1610 阅读 · 0 评论 -
volatile和synchronized比较以及线程安全中的应用
一、线程安全的执行控制和内存可见的理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。二、synchronized和volatile基本原理原创 2017-11-21 11:47:19 · 267 阅读 · 0 评论