随笔分类 -  Java 并发

1 2 下一页

CompletionService简介、原理以及小案例
摘要:博客1:http://www.oschina.net/question/12_11255 博客2: CompletionService简介 CompletionService与ExecutorService类似都可以用来执行线程池的任务,ExecutorService继承了Executor接口,而C 阅读全文

posted @ 2020-03-28 22:14 卖肾割阑尾 阅读(347) 评论(0) 推荐(0)

JAVA并发编程: CAS和AQS
摘要:参考:https://www.cnblogs.com/waterystone/p/4920797.html CAS(Compare And Swap)什么是CASCAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数—— 阅读全文

posted @ 2020-03-27 17:17 卖肾割阑尾 阅读(211) 评论(0) 推荐(0)

Java NIO
摘要:现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。在前面2篇文章《什么是Zero-Copy?》和《NIO相关基础篇》中我们学习了NIO的相关理论知识,而在本篇中我们一起来 阅读全文

posted @ 2019-12-30 21:55 卖肾割阑尾 阅读(172) 评论(0) 推荐(0)

漫画CAS 的ABA 问题
摘要:链接:https://blog.csdn.net/bjweimengshu/article/details/79000506 阅读全文

posted @ 2019-12-28 19:55 卖肾割阑尾 阅读(145) 评论(0) 推荐(0)

CAS 的ABA 问题
摘要:CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronized同步锁的一种乐观锁。 其原理是CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改 阅读全文

posted @ 2019-12-28 19:30 卖肾割阑尾 阅读(280) 评论(0) 推荐(0)

Semaphore使用
摘要:Semaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。Semaphore是一种计数信号量,用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数。 1.工 阅读全文

posted @ 2019-12-28 17:16 卖肾割阑尾 阅读(180) 评论(0) 推荐(0)

不可变对象
摘要:共享对象想要安全发布,主要有两种方法,一种是额外同步的方法,另外则是将对象做为不可变对象。当满足一下条件时,对象才是不可变的: 对象创建以后其状态就不能修改 对象所有的域都是final类型 对象正确创建(在创建对象期间,this引用没有逸出) 安全发布一个对象,对象的引用以及对象的状态必须同时对其他 阅读全文

posted @ 2019-12-28 11:17 卖肾割阑尾 阅读(127) 评论(0) 推荐(0)

Java锁--Lock实现原理(底层实现)
摘要:关于java lock的底层实现原理,讲的有点深,转载学习! 转载自 https://blog.csdn.net/Luxia_24/article/details/52403033 Lock完全用Java写成,在java这个层面是无关JVM实现的。 在java.util.concurrent.loc 阅读全文

posted @ 2019-12-27 13:45 卖肾割阑尾 阅读(1721) 评论(0) 推荐(1)

生产者与消费者
摘要:class Meal { private final int orderNum; public Meal(int orderNum) { this.orderNum = orderNum;} public String toString() { return "Meal " + orderNum; 阅读全文

posted @ 2018-05-22 21:36 卖肾割阑尾 阅读(110) 评论(0) 推荐(0)

如何创建线程?
摘要:Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关 阅读全文

posted @ 2018-04-30 23:57 卖肾割阑尾 阅读(140) 评论(0) 推荐(0)

进程和线程之由来
摘要:Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下 阅读全文

posted @ 2018-04-30 23:57 卖肾割阑尾 阅读(114) 评论(0) 推荐(0)

Thread类的使用
摘要:Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲 阅读全文

posted @ 2018-04-30 23:56 卖肾割阑尾 阅读(132) 评论(0) 推荐(0)

synchronized
摘要:虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解 阅读全文

posted @ 2018-04-30 23:55 卖肾割阑尾 阅读(116) 评论(0) 推荐(0)

深入剖析ThreadLocal
摘要:Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两 阅读全文

posted @ 2018-04-30 23:53 卖肾割阑尾 阅读(99) 评论(0) 推荐(0)

同步容器
摘要:Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同 阅读全文

posted @ 2018-04-30 23:52 卖肾割阑尾 阅读(116) 评论(0) 推荐(0)

Java ConcurrentModificationException异常原因和解决方法
摘要:Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个 阅读全文

posted @ 2018-04-30 23:50 卖肾割阑尾 阅读(116) 评论(0) 推荐(0)

并发容器之ConcurrentHashMap(转载)
摘要:Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 1.7与1.8有很大的区别:https://www.jianshu.com/p/3a2333b2f960 JDK5中添加了新的co 阅读全文

posted @ 2018-04-30 23:49 卖肾割阑尾 阅读(141) 评论(0) 推荐(0)

并发容器之CopyOnWriteArrayList(转载)
摘要:原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒 阅读全文

posted @ 2018-04-30 23:48 卖肾割阑尾 阅读(102) 评论(0) 推荐(0)

阻塞队列
摘要:在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 阅读全文

posted @ 2018-04-30 23:47 卖肾割阑尾 阅读(148) 评论(0) 推荐(0)

Callable、Future和FutureTask
摘要:在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开 阅读全文

posted @ 2018-04-30 23:46 卖肾割阑尾 阅读(101) 评论(0) 推荐(0)

1 2 下一页

导航