Java多线程
Ambition小啊潇
这个作者很懒,什么都没留下…
展开
-
Java多线程——ThreadLocal详解
Java多线程——ThreadLocal详解https://www.jianshu.com/p/3c5d7f09dfbdhttps://zhuanlan.zhihu.com/p/34494674原创 2019-10-28 17:48:22 · 248 阅读 · 0 评论 -
Java多线程——Executor框架详解
Java多线程——Executor框架详解 什么是Executor的两级调度模型 一、Executor框架两级调度模型 两级调度模型: 应用层+操作系统层 应用层:将应用分解为若干个任务,使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程。 操作系统层:操作系统内核将这些线程映射到硬件处理器上。 二、Executor框架详解 1、...原创 2019-10-21 14:29:27 · 424 阅读 · 0 评论 -
Java"设计模式"——生产消费者模式及三种实现方式
Java设计模式——生产消费者模式一、生产消费者模式原理 1、生产消费者模式主要是将生产者与消费者解耦,通过一个容器来解决生产者和消费者的强耦合问题,生产者消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯。 2、生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者也不找生产者要数据,而是直接从阻塞队列中取得,阻塞队列相当于一个缓冲区,平衡了生产者与消费者的处理能力,使得生...原创 2019-10-13 19:55:40 · 1891 阅读 · 0 评论 -
Java多线程——Condition机制
Java多线程——Condition机制六、Condition接口 1、Condition接口的await、signal机制 ①与内建锁wait、notify的区别 a)不同底层实现 Object类提供的wait与noify方法是与对象监视器monitor配合完成线程的等待与通知机制,属于JVM底层实现;而Condition与Lock配合完成的等待通知机制属于j...原创 2019-10-13 17:01:48 · 441 阅读 · 0 评论 -
Java多线程——Lock独占重入锁与读写锁详解
Java多线程——AQS独占锁与共享锁详解四、独占式重入锁——ReentrantLock 1、重入的实现原理 ①重入概念: 表示能够对共享资源重复加锁,即当前线程再次获取锁时不会被阻塞。 ②重入的获取 如果该同步状态不为0,表示此时同步状态(锁)已被线程获取,再判断持有同步状态的线程是否是当前线程,如果是,同步状态再次+1并返回true,表示持有线程重入同步...原创 2019-10-13 12:12:09 · 586 阅读 · 0 评论 -
笔试题总结——常见集合对象的线程安全
笔试题总结——常见集合对象的线程安全 线程安全(Thread-safe)的集合对象: Vector HashTable StringBuffer 非线程安全的集合对象 ArrayList LinkedList HashMap HashSet TreeMap TreeSet StringBuilder...原创 2019-10-12 10:29:04 · 181 阅读 · 0 评论 -
Java多线程——wait(),notify(),notifyAll()等待通知机制
Java多线程——生产者消费者模型 生产者消费者模型是基于多线程wait()和notify()来实现的,因此在学习生产者消费者模型前,先来看一下多线程中的wait()和notify()的使用。 这里所说的wait(),notify(),notifyAll()都是Object类的方法,线程Thread只不过是将这些方法进行了封装,实际调用的还是Object的方法。 wait():使线程...原创 2019-10-11 19:24:29 · 285 阅读 · 0 评论 -
Java多线程——synchronized底层实现及优化
三、synchronized底层实现(monitor机制) 1、同步代码块底层实现 通过操作系统的两大指令monitorenter(获取锁)和monitorexit(释放锁,解锁)来获取锁的对象的监视器(monitor) ①执行同步代码块前要执行monitorenter指令,执行同步代码块后要执行monitorexit指令。 ②使用synchronized实现同步,关键点就...原创 2019-10-08 17:01:51 · 304 阅读 · 0 评论 -
Java多线程——深入了解“死锁”
Java多线程——深入了解“死锁” 再了解“死锁”前,对“死锁”的知识进行简单的梳理,“死锁”无非就是什么“死锁”,“死锁”怎样产生,死锁的影响,如何避免“死锁”这四大问题。 众人皆知的“死锁”到底是什么? 1、“死锁”是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些线程都将无法向前推进的状态。 “死锁”到底是怎样产生的? 2、死锁的产生原因:对并...原创 2019-10-08 12:15:38 · 273 阅读 · 0 评论 -
Java多线程——深入理解"脏读"
Java多线程——深入理解"脏读" 脏读:某线程取到的数据是被其他线程所修改过的。 在Java中,若没有使用加锁操作,所有的线程之间是异步执行的,因此就会产生"脏读"导致数据的丢失或错误。 首先来看根本没有任何加锁操作的情况。 class MyThread implements Runnable{ private int num = 5; @Overri...原创 2019-10-06 14:30:18 · 1623 阅读 · 0 评论 -
笔试题总结——笔试中常见的多线程方法相关问题
笔试题总结——笔试中常见的多线程方法相关问题 通过最近做笔试题发现多次问到多线程方法的相关问题,本篇文章将对这些方法进行解答分析。 几种常用方法的用途? 多线程中有哪些方法会释放锁? 多线程中有哪些方法会释放CPU资源? join和sleep的区别? 首先看几种常用方法的用途,这个没什么可说的,都是一些概念需要记忆的东西,这里简单列举一下,具体的可以参考:多线程常用方法...原创 2019-09-29 12:24:17 · 234 阅读 · 0 评论 -
Java多线程——Thread.currentThread()与this的区别
Java多线程——Thread.currentThread()与this的区别 请参考:Thread.currentThread()与this的区别转载 2019-09-27 16:25:10 · 317 阅读 · 0 评论 -
Java多线程——线程启动函数start()源码解析
Java多线程——线程启动函数start()源码解析 无论用哪种方式实现多线程,最终究其根源都是在调用Thread类的start()方法。(详情请参考:Java多线程的四种实现方式),而此时就有一个疑问了,若要实现多线程需要覆写其run()方法,而为什么要使用start()启动线程而不直接调用run()方法? 首先来看一下start()方法的源码,看看这个方法究竟在干什么事情。 /**...原创 2019-09-27 11:51:45 · 1551 阅读 · 0 评论 -
Java多线程——三个多线程案例总结
Java多线程——三个多线程案例总结原创 2019-07-17 23:33:23 · 541 阅读 · 0 评论 -
Java多线程——synchronized机制
Java多线程——synchronized(内建锁)机制一、synchronized对象锁相关概念 了解synchronized机制必须首先了解synchronized的作用以及synchronized锁的应用场景 1、synchronized的作用:通过同步方法/同步代码块的方式实现同步处理(加锁操作) 2、synchronized的应用场景与注意事项: ①只有共享资源的读写...原创 2019-07-17 22:43:37 · 428 阅读 · 0 评论 -
Java多线程——深入理解线程池
Java多线程——线程池及Executor框架一、线程池简介 1、线程池的应用 几乎所有需要异步或者并发执行任务的程序都可以使⽤线程池 2、线程池的优点 ①降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的损耗 ②提高响应速度:当新任务到达时,任务不需要等待线程创建就可以立即执行 ③提高线程的可管理性:使用线程池可以统一进行线程的分配、调度与监...原创 2019-07-20 13:48:47 · 526 阅读 · 0 评论 -
Java多线程——多线程常用方法的使用
Java多线程——多线程常用方法总结 Java多线程的常用方法基本分为:获取当前线程的操作,线程休眠sleep()方法,线程让步yield()方法,等待其他线程终止join()方法,线程停止的一系列方法。一、获取当前线程的操作 1、获取当前线程: Thread.currentThread(); 需要注意的是: 当一个线程A开启后,调用其他线程类B的普通方法时,此时的线程还是线程A...原创 2019-07-17 10:07:34 · 609 阅读 · 2 评论 -
Java多线程——多线程的四种实现方式
Java多线程——多线程的四种实现方式及常用方法一、多线程的四种实现方式 1、直接继承Thread,覆写run()方法 class MyThread1 extends Thread{ private String title; public MyThread1(String title){ this.title = title; ...原创 2019-07-16 23:06:55 · 392 阅读 · 0 评论 -
Java多线程——Lock锁机制与AQS同步器流程
Java多线程——Lock锁机制一、Lock锁总结 1、Lock接口与AQS的关系 Lock接口的最主要实现类 ReentrantLock中所有的方法实际上都是调用了其静态内部类Sync中的方法 而Sync继承了AbstractQueuedSynchronizer(AQS-简称"同步器") 2、Lock与synchronize的区别 ①synchronized内建锁有...原创 2019-07-18 19:17:03 · 503 阅读 · 0 评论