JVM和并发
文章平均质量分 86
java多线程和并发
一个中文名
java博客
展开
-
锁概述:java和mysql
锁分类 : 互斥锁、自旋锁、读写锁、乐观锁、悲观锁互斥锁: 操作系统层面的重量级锁、会带来上下文切换的开销、锁的数量有限;如果加锁失败,操作系统会将线程阻塞自旋锁: CAS(Compare And Swap) 、会一直循环去加锁、但是如果一直获取不到锁、cpu开销会很大;互斥锁加锁失败后,线程会释放 CPU,给其他线程; 自旋锁加锁失败后,线程会忙等待,直到它拿到锁;读写锁:读共享和写独占当没有写操作时、多线程已经并发读取、提高读的性能;一旦有写操作,读和写操作都会阻塞、防止..原创 2021-03-05 16:53:18 · 6295 阅读 · 4 评论 -
互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
前言生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情呢?牛逼之人,必有牛逼之处。那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。如何用好锁,也是程序员的基本素养之一了。高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能,否则转载 2020-09-17 10:34:29 · 1697 阅读 · 1 评论 -
Java多线程⑥----Lock知识点梳理
多线程文章目录激烈竞争lock比synchonized更佳lock、condition、ReadWriteLock 三个接口Lock可以看到lock更加灵活;注意需要在finally方法释放锁下面对上述的5个方法进行一句话总结:lock():获取锁,不可中断、不可超时。lockInterruptibly():获取锁,可以中断、不可超时。trylock():获取当前可用的锁并返回true,否则返回false,无需中断、无需超时。tryLock(long time, Time.原创 2020-05-17 10:16:04 · 1709 阅读 · 0 评论 -
Java多线程⑤----并发知识点笔记
多线程文章目录下面这部分知识在面试中可能会用到,同时了解这些只有有助于我们写出高并发的代码;同时欢迎和我探讨。我只是简单的列出部分知识和概念,详细情况可以读我放出的博客链接。对象内存布局https://www.cnblogs.com/zhengbin/p/6490953.html包括三部分:对象头、实例数据和对齐填充对象头: 总共占12个字节,前8个字节是mark world (0-4 4-8) ;哈希码(HashCode)、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、原创 2020-05-17 10:12:37 · 1768 阅读 · 0 评论 -
Java多线程④---CompletableFuture简述
多线程文章目录JDK1.8新加CompletableFuture,实现了Future<T>, CompletionStage<T>两个接口。CompletableFuture vs ListenableFuturejdk8提供对future的升级,会优于Guava的ListenableFuture Futrue FutureTask CompletionService .原创 2020-05-17 07:19:05 · 6177 阅读 · 5 评论 -
多线程文章目录
以下文章基本上保证真实可信,如有谬误欢迎指正;同时很多内容来自个人有道笔记的摘抄,如果有不清不楚的地方还请见谅,随时欢迎咨询。Java多线程①——线程知识梳理有助于新手初步了解线程相关的知识同时加深对基础的理解。了解线程的状态、常用方法以及Thread、Runnable、Callable、Future、FutureTask这些基础概念Java多线程②——多线程知识梳理有助于了解线程池相关的知识、包括线程池执行逻辑、常用方法;以及java为我们提供常用的线程池和任务调度Sch.原创 2020-05-08 23:03:37 · 6337 阅读 · 33 评论 -
线程花絮
---简单对相关知识做的摘抄和收集--进程(Process)与线程(Thread)进程是系统资源分配的最小单元。线程是CPU调度的最小单元。 一个 进程至少包含一个线程,可以包含多个线程。这些线程共享这个进程的资源。 每个线程都拥有独立的运行栈和程序计数器,线程切换开销小。 多进程指的是操作系统同时运行多个程序,如当前操作系统中同时运行着QQ、IE、微信等程序。 多线程指的是同一进程中同时运行多个线程,如迅雷运行时,可以开启多个线程,同时进行多个文件的下载。并行(Parallel)、并发(转载 2020-05-08 22:16:11 · 331 阅读 · 0 评论 -
Java多线程③——Guava并发
Guava的ListenableFuture是对多线程使用的一个很好的补充,通过ListenableFuture的addCallback我们可以很好的完成调用成功(onSuccess)或者失败(onFailure)以后的逻辑处理,使用方法如下:@Slf4jpublic class ListenableFutureDemo implements Callable<String>{...原创 2019-07-14 14:14:53 · 6498 阅读 · 0 评论 -
Java多线程——ForkJoin并发框架
本章主要对ForkJoin并发框架进行学习,主要内容分为三个部分:ForkJoin并发框架的浅谈ForkJoin并发编程的两个实例ForkJoinPool线程池的常用方法说明1.ForkJoin并发框架的浅谈1.1.Fork和JoinForkJoin并发框架:Fork=分解 + Join=合并ForkJoin并发框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务...转载 2019-07-12 15:38:45 · 1228 阅读 · 0 评论 -
Java多线程②——多线程知识梳理
多线程的常用实现/常用的线程池根据阿里对使用线程池的规范:可以参考Executors的实现,按照业务实现自己的线程池。注意线程池等资源还是要想着关闭。初始化时,来一个任务新建一个一个线程;直到核心线程数满,再往队列里面放任务;如果队列也满了就继续新建线程到最大线程数量;如果最大线程数满就使用拒绝策略;Executor的默认拒绝策略是AbortPolicy;Spring线程池默...原创 2019-07-12 14:57:27 · 2752 阅读 · 0 评论 -
Java多线程①——线程知识梳理
线程状态 线程常用方法 Thread相关类和示例线程状态新建状态(New):新建线程对象 就绪状态(Runnable) 调用start()方法 运行状态(Running) 获得cpu的执行权限 (有人将阻塞分为三种,等待阻塞、同步阻塞和其他阻塞;个人觉得不利于理解线程的状态) BLOCKED/WAITING/TIMED_WAITING BLOCKED: 同步代码块/等待l...原创 2019-07-12 14:49:27 · 2854 阅读 · 0 评论