java并发
文章平均质量分 89
goodluckwj
努力就会有回报
展开
-
多线程顺序执行多次,分别使用synchronized、ReentrantLock、CyclicBarrier、Semaphore实现
分为两种: 1. 只执行一次 2. 执行多次多次执行的方法:多线程编程时,需要特别注意以下几点:线程会存在并行执行的情况,如果不干预肯定是不行的,所以,需要借助一些手段,才能达到线程顺序执行的目的。最主要的是借助共享资源(共享变量)来实现。像ReentrantLock、CyclicBarrier、CountDown都是通过对共享变量进行操作的。在操作时,每个线程都需要清楚,是应该继续执行,还是说睡眠(等待),等待被唤醒,清楚等待的条件和唤醒后继节点的条件,这几点...原创 2020-11-16 19:18:07 · 756 阅读 · 0 评论 -
CopyOnWriteArrayList使用场景和源码分析
(1)ArrayList和CopyOnWriteArrayList的增删改查实现原理?(2)为什么说ArrayList查询快而增删慢?(3)弱一致性的迭代器原理是怎么样的?(4)CopyOnWriteArrayList为什么并发安全且性能比Vector好?(5)JDK中为什么没有CopyOnWriteLinkedList? 对于CopyOnWriteArrayList面试的话,容易和ArrayList放在一起,让你比较他们之间的异同点,这一点需要有所准备。本文将重点讲解C...原创 2020-06-20 14:20:59 · 1828 阅读 · 0 评论 -
对于Java线程中断的理解,哪种情况下会响应中断?哪种情况下不响应中断?
最近在学习JUC框架的时候,发现了很多工具类都是支持可中断的,如AQS、FutureTask都是可以在线程执行中,支持对于中断的响应,所以需要对线程中断有个了解,才能更好的学习JUC的源码。线程中断的作用: 线程中断可以使一个线程从等待状态变成就绪状态,如果中断的线程正处于运行状态,那么这个中断是不会用任何作用的(表面上不会影响正在运行的线程),线程恢复到就绪状态后,可以继续执行逻辑代码,想要让一个线程从等待状态中恢复过来有三种发送:一.等待超时,二.得到一个通知...原创 2020-06-15 20:20:29 · 6220 阅读 · 0 评论 -
FutureTask的使用和源码分析
最近在学习线程池相关的内容,关于并发编程的内容我打算把自己学到的都记录下来,本来个人是赖的记录的,可惜的是学过一遍,当时感觉自己很牛逼,都记住了,但是过了两三个月就啥到不知道了,所以这次再次学习并发编程会记录一些学习的心得,省的下次忘记了。 关于FutureTask可以让一个线程能够拿到其他线程未来某一时刻执行的结果,然后根据结果进一步处理,下面先看一下FutureTask的继承关系。 ...原创 2020-06-15 09:53:03 · 406 阅读 · 0 评论 -
深入理解ThreadLocal的原理及内存泄漏问题
学习Java中常用的开源框架,Mybatis、Hibernate中设计到线程通过数据库连接对象Connection,对其数据进行操作,都会使用ThreadLocal类来保证Java多线程程序访问和数据库数据的一致性问题。就想深入了解一下ThreadLocal类是怎样确保线程安全的!详解如下: ThreadLocal的简单使用:public class Tes.........原创 2020-02-26 20:49:02 · 1717 阅读 · 1 评论 -
深入理解wait()、notify()和notifyAll()方法为什么属于Object,为什么要在synchronized代码块中
LZ在网上看了很多关于这个问题的解释,都不够深入,那么今天就让我带大家深入了解这个问题。关于synchronized的详细介绍请移步大神所写的博客:深入理解Java并发之synchronized实现原理,这篇文档稍微有点长,我会用自己的话总结一下关于wait()、notify()和notifyAll()的问题。 说到Object的这三个方法,就需要先说一下sync...原创 2020-01-08 16:18:33 · 907 阅读 · 0 评论 -
Thread类的常见方法,join和yield的区别
在 Java 中,创建线程去执行子任务一般有四种方式: 1.继承Thread类,并重写run方法 2.创建一个类去实现Runnable接口,然后将这个类以参数的形式传递给Thread类。 3.实现Callable接口 4.使用线程池的方法创建线程 这四种方法或多或少都要和Thread打交道,所以先研究好T...原创 2020-04-11 10:39:25 · 4923 阅读 · 0 评论