线程、并发
文章平均质量分 58
线程、并发
givmchickenblood
try to like it,do it
展开
-
ConcurrentHashMap 与 HashMap的区别、以及初始化设置大小提升性能
原创 2024-05-21 14:48:04 · 325 阅读 · 0 评论 -
ThreadLocalRandom.current().nextInt(100) 和 Random.nextInt 的区别
ThreadLocalRandom.current().nextInt(100) 和 Random.nextInt(100) 都是在 Java 中生成随机整数的方法,但它们之间存在一些关键区别,特别是在多线程环境下使用时。ThreadLocalRandom 是为多线程环境优化的,每个线程使用 ThreadLocalRandom 时都会有自己的随机数生成器,这样就减少了在多线程环境中争用同一个随机数生成器实例的开销。相对于 Random,它提供了更好的性能和较小的内存占用。原创 2024-05-21 11:19:23 · 923 阅读 · 0 评论 -
AtomicBoolean介绍
AtomicBoolean类的优点在于原子性操作,可确保在多线程环境中对布尔值的读取和设置不会产生竞态条件,同时,它的性能通常优于使用synchronized的代码,因为它避免了线程阻塞和上下文切换的开销。同时,AtomicBoolean还提供了丰富的API,如compareAndSet和getAndSet等。但是,虽然AtomicBoolean提供了原子性保证,但它却无法解决并发中的可见性和有序性问题,这里需要特别注意。转载 2024-04-11 10:10:19 · 45 阅读 · 1 评论 -
降级、熔断、限流
当我们的系统的访问量突然剧增,大量的请求涌入过来,最典型的就是秒杀业务了,我们可能会知道会有一波高峰,这时候该如何处理?而且现在很多情况我们还需要调用第三方接口例如支付等,因此我们还得考虑如果第三方那边出问题了,返回异常的慢,我们系统该如何处理。常见的处理方式有三种:降级、熔断、限流。1、降级降级也就是服务降级,当我们的服务器压力剧增为了保证核心功能的可用性 ,而选择性的降低一些功能的可用性,或者直接关闭该功能。这就是典型的丢车保帅了。就比如贴吧类型的网站,当服务器吃不消的时候,可以选择把发帖功能转载 2021-06-21 17:01:27 · 5443 阅读 · 0 评论 -
线程的五大状态
https://blog.csdn.net/peter_teng/article/details/10197785#commentBox线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。(1)新建状态(New):当用new操作符创建一个线程时, 例如new Thread®,线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新建状态时,...转载 2019-03-17 12:36:48 · 222 阅读 · 0 评论 -
操作系统之进程的状态和转换详解
https://blog.csdn.net/qwe6112071/article/details/70473905进程的状态和转换三态模型一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻划,根据三态模型,进程的生命周期可分为如下三种进程状态:运行态(running):占有处理器正在运行就绪态(ready):具备运行条件,等待系统分配处理器以便运行等待态(block...转载 2019-03-17 12:28:34 · 1975 阅读 · 0 评论 -
Java多线程之内存可见性和原子性:Synchronized、Volatile和final的可见性比较
https://blog.csdn.net/guyuealian/article/details/52525724#commentBoxhttps://blog.csdn.net/SEU_Calvin/article/details/523700681 Java内存模型 JMM在说明Java多线程内存可见性之前,先来简单了解一下Java内存模型(JMM):Java所有变量都存储在主内存中...转载 2019-03-08 12:30:05 · 640 阅读 · 0 评论 -
Java多线程的调度策略
https://blog.csdn.net/wangyangzhizhou/article/details/41122385在Java多线程环境中,为保证所有线程的执行能按照一定的规则执行,JVM实现了一个线程调度器,它定义了线程调度的策略,对于CPU运算的分配都进行了规定,按照这些特定的机制为多个线程分配CPU的使用权。这小节关注线程如何进行调度,了解了java线程调度模式有助于后面并发框架的...转载 2019-03-16 23:03:51 · 1177 阅读 · 0 评论 -
java线程中join(),yield(),sleep(),wait(),notify(),interrupt(),run(),start()区别详解
https://blog.csdn.net/qxs965266509/article/details/81343341 sleep(long millis):Thread类,必须带一个时间参数sleep(long):使调用该方法的线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会被执行;sleep(long)是不会释放锁标志的,也就是说如果有synchronized...转载 2019-03-16 21:25:05 · 684 阅读 · 0 评论 -
并发和并行,异步与多线程区别
https://blog.csdn.net/woliuyunyicai/article/details/451658691 并发和并行的区别可由上图形象指出两者的区别:定义:并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并行:在操作系统中,一组程序按独立异步的速度执行,...转载 2019-03-10 21:33:49 · 153 阅读 · 0 评论 -
Java多线程学习之wait、notify/notifyAll 详解
https://www.cnblogs.com/moongeek/p/7631447.html转载 2019-03-14 20:45:46 · 180 阅读 · 0 评论 -
Java面试必问:ThreadLocal
https://www.jianshu.com/p/377bb840802fhttps://www.jianshu.com/p/98b68c97df9b有些面试官会开门见山的提问:“知道ThreadLocal吗?”“讲讲你对ThreadLocal的理解”当然了,也有面试官会慢慢引导到这个话题上,比如提问“在多线程环境下,如何防止自己的变量被其它线程篡改”,将主动权交给你自己,剩下的靠自己...转载 2019-03-06 22:37:32 · 820 阅读 · 0 评论 -
协程
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432090171191d05dae6e129940518d1d6cf6eeaaa969000协程,又称微线程,纤程,是一种程序组件,一个轻量级的线程。单核CPU中系统会将CPU划分为时间片,调度不同线程进行运行,给用户造成...转载 2019-03-14 00:30:32 · 1408 阅读 · 0 评论 -
进程间的通信方式
https://blog.csdn.net/jmy5945hh/article/details/7350564这个太多了,没整理完https://blog.csdn.net/wh_sjc/article/details/70283843#commentBox进程是一个程序的一次执行过程。进程用户空间是相互独立的,一般而言是不能相互访问的。 但很多情况下进程间需要互相通信,来完成系统的某项功能...转载 2019-03-13 23:34:38 · 233 阅读 · 0 评论 -
进程的死锁如何产生+避免死锁方法
什么是死锁死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。死锁...转载 2019-03-17 18:07:16 · 3536 阅读 · 0 评论 -
Lock、ReentrantLock、synchronized
https://www.cnblogs.com/dolphin0520/p/3923167.htmlReentrantLockhttps://blog.csdn.net/qq_38293564/article/details/80515718synchronized和Locksynchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?在...转载 2019-03-24 20:06:44 · 144 阅读 · 0 评论 -
java中的锁:偏向锁、轻量级锁、自旋锁、重量级锁
https://blog.csdn.net/zqz_zqz/article/details/70233767之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的:单线程下synchronized效率最高(当时感觉它的效率应该是最差才对);AtomicInteger效率最不稳定,不同并发情况下表现不一样:短...转载 2019-03-22 18:44:16 · 519 阅读 · 0 评论 -
JAVA CallBack详解 之 异步回调
参考https://www.cnblogs.com/dong-liu/p/7476955.html上一篇文章讲述了同步回调,本篇文章讲讲异步回调,用线程实现。回调机制是什么哪?先上一幅图来说明一下吧,这里用老师问问题,学生回答问题为例子,解释一下回调机制的使用首先需要一个接口callback,以及一个继承了接口的类Teacher。Teahcer类中有另一个类Student的对象,在Tea...转载 2019-10-06 16:42:36 · 1022 阅读 · 0 评论 -
JAVA CallBack详解 之 同步回调
参考https://www.cnblogs.com/heshuchao/p/5376298.html#!comments开始之前,先想象一个场景:幼稚园的小朋友刚刚学习了10以内的加法。第1章 故事的缘起幼师在黑板上写一个式子 “1 + 1 = ”,由小明同学来填空。由于已经学习了10以内的加法,小明同学可以完全靠自己来计算这个题目,模拟该过程的代码如下:public class St...转载 2019-10-06 16:05:24 · 1024 阅读 · 0 评论 -
synchronized原理(未整理)
超级棒 https://blog.csdn.net/u011212394/article/details/82228321https://cloud.tencent.com/developer/article/1465413转载 2019-09-25 05:59:21 · 150 阅读 · 0 评论 -
Java 四种实现线程的方式
线程的起动并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN方法,我们普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法却不一样,它只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样。你简单的调用...转载 2019-09-23 11:08:19 · 568 阅读 · 1 评论 -
AtomicBoolean介绍与使用
参考https://blog.csdn.net/zmx729618/article/details/52767736AtomicBoolean是java.util.concurrent.atomic包下的原子变量,这个包里面提供了一组原子类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而...转载 2019-08-10 19:35:16 · 204 阅读 · 0 评论 -
https://ifeve.com/reactive(响应式)编程-reactor/
https://ifeve.com/reactive(响应式)编程-reactor/首先考虑一下,为什么需要这样的异步反应式编程库?现代应用程序可以支持大量并发用户,即使现代硬件的功能不断提高,现代软件的性能仍然是一个关键问题。人们可以通过两种方式来提高系统的能力:并行化:使用更多线程和更多硬件资源。在现有资源的使用方式上寻求更高的效率。通常,Java开发人员使用阻塞代码编写程序。这种做...转载 2019-08-18 23:56:10 · 151 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)的原理和实现
https://www.jianshu.com/p/88c6ac4b38c81 布隆过滤器原理布隆过滤器(Bloom Filter)的核心实现是一个超大的位数组和几个哈希函数。假设位数组的长度为m,哈希函数的个数为k以上图为例,具体的操作流程:假设集合里面有3个元素{x, y, z},哈希函数的个数为3。首先将位数组进行初始化,将里面每个位都设置位0。对于集合里面的每一个元素,...转载 2019-04-25 15:37:06 · 596 阅读 · 0 评论 -
Java中CAS详解
https://blog.csdn.net/ls5718/article/details/52563959在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换 和 调度延时,引起性能问题。(2)一个线程持有锁会,导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一...转载 2019-04-02 00:41:08 · 193 阅读 · 0 评论 -
进程和线程的主要区别(总结)
https://blog.csdn.net/kuangsonghan/article/details/80674777https://www.cnblogs.com/zhuzhu2016/p/5804875.htmlhttps://www.cnblogs.com/zhehan54/p/6130030.html实现并发的方式有多种:比如多进程、多线程、IO多路复用。1 多进程进程是资源(C...转载 2019-03-09 11:03:08 · 625 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第15-19章(应用限流思路|服务降级与服务熔断思路|数据库切库分库分表思路|高可用手段介绍|课程总结)
高并发之初识限流高并发之服务降级与熔断高并发之高可用手段数据库切库分库分表简谈从零开始搭建一套业务相关监控报警系统自定义注解完成数据库切库利用mybatis插件实现数据库分表多个数据源的轻松支持...转载 2018-10-27 18:52:57 · 320 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第13章(高并发之消息队列思路)
参考https://suprisemf.github.io/2018/08/03/消息队列/https://blog.csdn.net/lengyuezuixue/article/details/812321931、消息队列消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。消息被处理的过程相...原创 2018-10-21 12:06:51 · 933 阅读 · 0 评论 -
Java Thread.yield详解
前言: 前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案例总结了一下!原创 2018-10-08 22:00:07 · 462 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第9章(线程池)
转自 https://www.jianshu.com/p/5b692c96e08d很详细!结合项目代码 和 Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor转载 2018-10-15 12:18:27 · 1318 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第8章(J.U.C组件拓展)
转自 https://www.jianshu.com/p/37df9fe68ece很详细!转载 2018-10-15 12:16:26 · 183 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第7章(J.U.C之AQS)~未整理完
转自 https://www.jianshu.com/p/99f1c01f3226很详细!转载 2018-10-15 12:15:17 · 773 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第6章(线程安全策略)
https://www.jianshu.com/p/c6ce651e802d转载 2018-10-15 12:13:02 · 135 阅读 · 0 评论 -
JAVA并发编程与高并发解决方案 - 视频第4-5章(线程安全性、安全发布对象)
转自https://www.jianshu.com/p/895950290179很详细!转载 2018-10-15 12:11:32 · 148 阅读 · 0 评论 -
CPU cache结构和缓存一致性(MESI协议)
转自 https://blog.csdn.net/reliveit/article/details/50450136一、cachecpu cache已经发展到了三级缓存结构,基本上现在买的个人电脑都是L3结构。1. cache的意义为什么需要CPU cache?因为CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解...转载 2018-09-27 21:05:08 · 318 阅读 · 0 评论 -
未整理--大数据处理系列之(一)Java线程池使用, Java 使用线程池执行大数据量统计任务
https://www.cnblogs.com/cstar/archive/2012/06/14/2549494.html https://blog.csdn.net/difffate/article/details/77149901 https://blog.csdn.net/qiyongkang520/article/details/47904863 https://blog.csdn....转载 2018-07-30 16:58:14 · 766 阅读 · 0 评论 -
java 多线程join()
虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结。一、作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码: public class JoinTest { public static void main(String [] args) throws ...转载 2018-07-26 20:26:08 · 132 阅读 · 0 评论 -
java Timer定时任务、ScheduledExecutorService
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。一、简介在java中一个完整定时任务需要由Timer、TimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执...原创 2018-07-02 22:49:03 · 257 阅读 · 0 评论 -
Java中调度线程池ScheduledThreadPoolExecutor原理探究
转自 https://www.jianshu.com/p/b47f2df9e917 https://blog.csdn.net/luanmousheng/article/details/77816412 另外 https://blog.csdn.net/luanmousheng?t=1这个博主写了一系列的线程池原理转载 2018-07-05 11:56:13 · 194 阅读 · 0 评论 -
java Unsafe类中compareAndSwap相关介绍
转自https://blog.csdn.net/sherld/article/details/42492259https://blog.csdn.net/gol_phing/article/details/48931727https://blog.csdn.net/sherld/article/details/42492259这篇文章的内容:最近在看jdk7中java.util.conc...转载 2018-10-10 09:41:31 · 396 阅读 · 0 评论