
#java多线程
积善之家、必有余庆
我相信梦想可以到达的地方,总有一天脚步也可以到达!
展开
-
【并发:Java中的阻塞队列】简单理解
博文部分参考:【Java 编程思想 第四版】+ 电子书总结阻塞队列1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:1.抛出异常:是指当阻塞队列满时.原创 2020-12-20 22:44:10 · 146 阅读 · 0 评论 -
【线程之间的协作: wait、notify、notifyAll】
博文参考:【Java 编程思想 第四版】线程通信1.wait与notify1.wait与notify该方法用来将当前线程置入休眠状态,直到接到通知或被中断为止。在调用wait()之前,线程必须要获得该对象的对象级别锁,即只能在同步方法或同步块中调用 wait()方法。进入wait()方法后,当前线程释放锁。在从 wait()返回前,线程与其他线程竞争重新获得锁。如果调用wait()时,没有持有适当的锁,则抛出IllegalMonitorStateException,它是 RuntimeExce.原创 2020-12-20 21:47:10 · 114 阅读 · 2 评论 -
【synchronized 关键字修饰静态、非静态方法的区别】
synchronized 锁我之前写过两篇关于多线程的博客,对synchronized锁的实现机制有详细的解释,有兴趣的朋友可以先跳转:多线程测试总结:多线程使用同一个对象,只允许同时使用一个对象锁,一个类锁,其他操作搭配都互斥,只能等前一个线程解锁才能让下一个线程使用;多线程分别 new 一个对象,允许同时使用任意的对象锁,也允许对象锁和 一个类锁同时使用,但是类锁不能够同时使用,会互斥,只能等前一个线程解锁才能让下一个线程使用;下面我们来分组测试:我们先准备一个含有对象锁和类锁的原创 2020-12-05 09:31:40 · 144 阅读 · 0 评论 -
【字节跳动2020面经】
说明:以下面经是来自一位2020年面试字节跳动的朋友的面试题链接:https://blog.youkuaiyun.com/a159357445566/article/details/110128543这位朋友总共进行了两面,但是第二面(凉凉),所以又捞了一面(再凉),看看下面这位朋友的面经,是否你可以运筹帷幄呢?一面时长:1h 07m1、 Integer 和 int 的区别,平时编程中什么时候使用 Integer,什么时候使用 int?2、new Integer(1); 会不会从缓存当中取?3、Lis转载 2020-12-02 08:51:29 · 245 阅读 · 0 评论 -
【Java 线程池 概念+深析】简单理解
加油,每天一篇博客,我辈岂是蓬蒿人目录1.什么是线程池2.为什么要用线程池3.线程池的创建3.1 四种线程池的使用1.什么是线程池java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。百度:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线.原创 2020-09-23 16:36:02 · 540 阅读 · 0 评论 -
【Java 底层分析ConcurrentHashMap 线程安全】简单理解
ConcurrentHashMap1.JDK1.7版本源码分析1.1 初始化1.2 put操作1.3 get操作1.4 size操作2. JDK1.8的实现2.1 node节点2.2TreeNode2.3 put操作2.4 get操作4.面试题ConcurrentHashMap 与HashMap和Hashtable 最大的不同在于:put和 get 两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达Segment里面的Entry,然后在遍历entry链表(1) 从1.原创 2020-09-20 17:01:54 · 439 阅读 · 0 评论 -
【Java Condition线程通信原理】简单理解
Condition一、Condition概念二、 Condition接口1.方法详解2.获取Condition一、Condition概念1.如果程序不使用synchronized关键字来保证同步 , 直接使用Lock对象 , 则系统中不存在隐式的同步监视器 , 也就不能使用wait(),notify(),notifyAll()方法进行通信了2.当使用Lock对象来保证同步时,使用Condition可以让那些已经得到Lock对象无法继续执行的线程释放Lock对象,Condition对象也可以唤醒其他处原创 2020-09-19 10:46:51 · 238 阅读 · 0 评论 -
【Java ASQ队列同步器实现原理】简单理解
ASQ1.概念2.核心结构3.实现原理3.1 同步状态的获取3.2 同步队列3.3 独占式同步状态的获取1.概念队列同步器AbstractQueuedSynchronizer(后面简称AQS)是实现锁和有关同步器的一个基础框架,其内部通过一个被标识为volatile的名为state的变量来控制多个线程之间的同步状态。多个线程之间可以通过AQS来独占式或共享式的抢占资源。例如,在锁这个问题上,Java中提供的是synchronized关键字,用这个关键字可以很方便的实现多个线程之间的同步。但这个关键字原创 2020-09-18 12:22:06 · 736 阅读 · 0 评论 -
【Java 多线程 全面、透彻】简单理解
多线程 七、悲观锁和乐观锁1.悲观锁1.1概念1.2 悲观锁机制存在的问题2、乐观锁2.1概念2.2 乐观锁的实现方式2.3 乐观锁存在的问题八、死锁1.造成死锁的条件2.常见的死锁问题3.哲学家就餐问题4.死锁的预防七、悲观锁和乐观锁1.悲观锁1.1概念总是假设最坏的情况,也就是每一次去拿数据都默认别人会修改,所以每次拿数据都会上锁,这会导致有其他人想要拿到数据就会阻塞知道获取到这把锁synchornized关键字的实现就是:悲观锁1.2 悲观锁机制存在的问题1、多线程竞争下,加锁,解锁都会原创 2020-09-15 23:40:15 · 703 阅读 · 0 评论 -
【Java 多线程 全面,深析】简单理解
多线程一、进程和线程1>进程和线程的概念和特点二、JVM内存结构一、进程和线程1>进程和线程的概念和特点进程:1、进程是一个正在运行的程序,一个程序可以同时执行多个任务(线程)2、进程拥有独立的内存空间,保持各自的运行状态,相互之间互不干扰3、进程是并发执行程序在执行过程资源分配和管理的基本单位(资源分配的最小单位)4、每个进程都有自己的独立的地址空间,每启动一个进程,系统就会分配地址空间线程:1、通常,每一个任务成为一个线程,线程有时、候会被称为轻量级的进程,它是程序执原创 2020-08-25 22:42:21 · 452 阅读 · 0 评论