高并发
!
已转行@
不适合此行业,已弃坑……
展开
-
ForkJoinPool
ForkJoin框架是jdk7产生的一个新的并发框架,从其名字得知两个词fork()拆分、join()合并就是利用拆分合并的思想,将一个大任务先拆分好,直到不能拆分为止,然后完成任务,最终将结果合并。分别用三种方法计算,并对比计算效率:结论:大数据量下,不要用for暴力取值,效率最低!所有耗时都在计算,但他是单线程的结论:采用RecursiveTask(递归任务的意思),使用ForkJoin时,!否则太小,由于任务拆分也会消耗时间。结论:当数据量不是太大时,效率最高。原因是:forkjoin拆分任务需要时原创 2022-06-14 02:53:06 · 210 阅读 · 0 评论 -
Stream流式计算
什么是Stream流式计算大数据: 存储+计算集合、Mysql本质就是存储东西的;计算都应该交给流来操作!原创 2022-06-13 18:03:27 · 132 阅读 · 0 评论 -
四大函数式接口(必需掌握)
Function 函数型接口 :有一个输入参数,有一个输出Predicate 断定型接口 :有一个输入参数,返回值只能是 布尔值!Supplier 供给型接口 :只有输入,没有返回值Supplier 供给型接口 :没有参数,只有返回值......原创 2022-06-13 02:39:19 · 470 阅读 · 0 评论 -
IO密集型和CPU密集型
需非常多CPU计算资源,让每个CPU核心都参与计算,CPU性能充分利用,避免过多线程上下文切换,理想方案是:线程数 = CPU核数+1也可CPU核数*2,要看JDK版本,及CPU配置(服务器CPU有超线程)。1.8来增加并行计算,想线程数 = CPU内核线程数*2网络、磁盘 IO (与DB、缓存),一旦IO,线程就等待,结束才执行。多设线程数,等待时去做其它事,提高效率。线程上下文切换有代价。IO密集型公式:线程数 = CPU核心数/(1-阻塞系数) 阻塞系数一般0.8~0.9,双核CPU理想线程数转载 2022-06-13 01:08:01 · 4973 阅读 · 0 评论 -
线程池的七大参数及自定义线程池
线程池的七大参数线程池的自定义线程池线程池的四种拒绝策略原创 2022-06-13 00:19:26 · 226 阅读 · 0 评论 -
线程池的三大方法
线程池的三大方法原创 2022-06-12 20:08:57 · 312 阅读 · 0 评论 -
BlockingQueue四组API
BlockingQueue(阻塞队列)四组API什么情况下我们会使用 阻塞队列?多线程并发处理,线程池!一定要学会使用队列添加、移除原创 2022-06-12 02:59:33 · 230 阅读 · 0 评论 -
ReadWriteLock
独占锁(写锁) 一次只能被一个线程占用! 共享锁(读锁) 多个线程可以同时占有!原创 2022-06-12 01:31:26 · 80 阅读 · 0 评论 -
常用的辅助类—(重点)
倒数计时器原理: //数量 -1 //等待计数器归零,然后再向下执行每次有线程调用 countDown() 数量 -1 ,假设计数器变为0,countDownLatch.await() 就会被唤醒,继续执行!加法计数器3、Semaphore停车位! 限流!6车 ---->3个停车位原理: 获得 , 假设如果满了,等待,等待被释放为止! 释放,会将当前的信号量释放 -1 , 然后唤醒等待的线程!...原创 2022-06-12 00:34:43 · 135 阅读 · 0 评论 -
Callable
Callable 与 Runnable 的区别:1、可以有返回值2、可以抛出异常3、方法不同,run() / call()原创 2022-06-11 20:06:18 · 100 阅读 · 0 评论 -
集合类并发不安全问题
代码如下:代码如下:总结如下:1、 CopyOnWrite由于使用了 “写时复制” 的思想,适用于 “读多写少” 的场景;由于在进行写操作的时候会复制原数组,对内存的占用会比较大,不适用于大数据量的场景;只能保证最终的数据一致性,不能保证实时的数据一致性——读操作只能从旧数组中读取数据,而此时可能已经复制了一个新数组,并且正在修改新数组的数据。迭代是对快照进行的,不会抛出 ,且迭代过程中不支持修改操作。1、线程不安全的HashMap2、效率低下的HashTable容器3、Concurre原创 2022-06-11 02:04:46 · 128 阅读 · 0 评论 -
八锁问题详解
“八锁”有什么含义?很好理解,就是:有关8个锁的问题!原创 2022-06-10 22:10:56 · 739 阅读 · 0 评论 -
生产者和消费者问题
虚假唤醒解决办法:把if 换成 while 即可!任何一个新的技术,绝对不是仅仅只是覆盖了原来的技术,优势和补充!运行结果:原创 2022-06-10 16:06:48 · 61 阅读 · 0 评论 -
Lock锁(重点)
公平锁:十分公平:可以先来后到非公平锁:十分不公平:可以插队(默认)1、Synchronzied 内置的Java关键字,Lock是一个java类2、Synchronzied 无法判断获取锁的状态,Lock 可以判断是否获取到了锁3、Synchronzied 会自动释放锁,lock 必须要手动释放锁!如果不释放锁,死锁4、Synchronzied 线程1(获得锁)、线程2(等待,傻傻的等);Lock锁就不一定会一直等下去!5、Synchronzied 可重入锁,不可以中断的,非公平;Lock,可原创 2022-06-10 15:57:08 · 158 阅读 · 0 评论 -
线程和进程的区别
进程: 一个程序,QQ.exe Music.exe 程序的集合;一个进程往往可以包含多个线程,至少包含一个!Java默认有几个线程? 2个 分别是: main、GC线程: 开了一个进程Typora,写字,自动保存(线程负责的)对于Java而言:Thread、Runnable、CallableJava真的可以开启线程吗? 开不了并发 (多线程操作同一个资源)并行 (多个人一起行走)并发编程的本质:充分利用CPU的资源所有公司都很看重!1、来自不同的类wait => Objectsleep =>原创 2022-06-10 15:46:23 · 74 阅读 · 0 评论 -
什么是JUC
JUC简介原创 2022-06-10 15:27:46 · 137 阅读 · 0 评论