![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发多线程
清露草木
用博客整理技术,用坚持砥砺前行。等是窟窿,走是灯笼
展开
-
Java中CAS详解
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volatile不能保证原子性。因...转载 2018-03-08 13:43:51 · 132 阅读 · 0 评论 -
Java ExecutorService线程池中的小坑——关于线程池中抛出的异常处理
开发自己的项目有一段时间了,因为是个长时间跑的服务器端程序,所以异常处理显得尤为重要。对于异常的抓取和日志(狭义上的日志)的分析一点都不能落下。我们使用了Java自带的Executor模块,我只是稍微看了下Executors当中三个线程池的实现(策略为:Fixed, Cached, Schedule),其实光看名字就可以了解各自的一些策略信息。OK,这一次我需要一种策略合并Fixed和Cached...原创 2018-05-04 16:13:56 · 7838 阅读 · 1 评论 -
Java线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2.线程...原创 2018-05-04 16:01:52 · 185 阅读 · 0 评论 -
JAVA多线程/并发——问题与答案(2)
线程安全1,什么是线程安全?线程安全:多个线程同时访问公共资源数据,运行同一段代码,并且每次执行的结果都与预期结果一致,既为线程安全的。如果执行的结果存在不确定性,既为线程不安全的。2,servlet是线程安全吗?servlet不是线程安全的,因为每个servlet在Tomcat是单例的,当多个HTTP请求同时请求同一个servlet时,多个请求对应的线程将并发调用Servlet的service(...原创 2018-04-26 16:00:27 · 428 阅读 · 0 评论 -
JAVA多线程/并发——问题与答案(1)
多线程java中有几种方法可以实现一个线程?JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。ExecutoreService提供了submit()方法,传递一个Callable,或Runnable,返回Futur...原创 2018-04-26 13:54:55 · 339 阅读 · 0 评论 -
深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。 诚然,随着Javs SE...转载 2018-04-25 17:15:46 · 114 阅读 · 0 评论 -
Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。...转载 2018-04-23 14:46:49 · 186 阅读 · 0 评论 -
深入分析volatile的实现原理
https://www.cnblogs.com/chenssy/p/6379280.html原创 2018-03-26 21:59:03 · 165 阅读 · 0 评论 -
ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器
而在迭代时,ConcurrentHashMap使用了不同于传统集合的快速失败迭代器(见之前的文章《JAVA API备忘---集合》)的另一种迭代方式,我们称为弱一致迭代器。在这种迭代方式中,当iterator被创建后集合再发生改变就不再是抛出ConcurrentModificationException,取而代之的是在改变时new新的数据从而不影响原有的数据,iterator完成后再将头指针替换为...转载 2018-03-26 21:39:43 · 2238 阅读 · 0 评论 -
JAVA多线程/并发问题与答案源
线程安全什么叫线程安全?servlet是线程安全吗?同步有几种实现方法?volatile有什么用?能否用一句话说明下volatile的应用场景?请说明下java的内存模型及其工作流程。为什么代码会重排序?并发容器和框架如何让一段程序并发的执行,并最终汇总结果?如何合理的配置java线程池?如CPU密集型的任务,基本线程池应该配置多大?IO密集型的任务,基本线程池应该配置多大?用有界队列好还是无界队...原创 2018-03-20 22:46:27 · 244 阅读 · 0 评论 -
结合源码分析AQS实现原理
说说并发的基础AQS原创 2018-05-07 20:17:37 · 299 阅读 · 0 评论