JAVA多线程
风兮~
这个作者很懒,什么都没留下…
展开
-
【线程安全的List】CopyOnWriteArrayList的原理及使用
1、原理CopyOnWriteArrayList是一个线程安全的ArrayList如果一段并发程序,读操作明显多于写操作的话,那么使用CopyOnWriteArrayList的性能会比Vector更高CopyOnWriteArrayList的实现原理就是读写分离,它对所有的写操作都使用ReentrantLock来加锁,对所有的读操作都不加锁,那它是怎么保证线程安全性问题的呢?CopyOnWrite...原创 2018-03-08 07:51:52 · 2740 阅读 · 0 评论 -
JDK1.5提供的原子类原理及使用
JDK提供的原子类原理及使用volatile只能保障可见性,不能保障原子性,如value++操作,就不是一个原子性操作,value++共分为以下三步操作(假如value的值是0):1、取出value的值为0;2、将value的值进行加一操作,得到一个新值为1;3、将新值1再赋值给变量value。假如线程1刚执行完了第二步,此时value的值依然为0,得到的新值为1,然后就轮到线程2执行。线程2执行...原创 2018-02-24 15:15:10 · 294 阅读 · 0 评论 -
JAVA内存的可见性
1、JMM通俗地讲,就是描述Java中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。JMM对共享内存的操作做出了如下两条规定:线程对共享内存的所有操作都必须在自己的工作内存中进行,不能直接从主内存中读写;不同线程无法直接访问其他线程工作内存中的变量,因此共享变量的值传递需要通过主内存完成。2、内存的可见性可见:一个线程修改了这个变量的值,在另外...原创 2018-02-21 16:26:25 · 324 阅读 · 0 评论 -
JAVA线程概述
1、线程名称以下代码输出Thread-0、Thread-1,因为虽然线程没开启,但在对象创建的时候就已经定义好名称了package bear.utils;public class MainTest { public static void main(String[] args) { Deom d1 = new Deom(); Deom d2 = new Deom(); ...原创 2018-02-16 23:11:18 · 247 阅读 · 0 评论