并发编程
并发编程
.Passion
欢迎来看我的博客 ,原博客地址: https://www.cnblogs.com/lyr-2000/
现决定重新启用博客园的博客,一部分比较浅的笔记将写到这个博客上
欢迎打扰,另外,个人博客网站也搭建成功,欢迎打扰:
https://lyr-2000.github.io/
展开
-
java多线程知识总结001
详细描述ThreadPoolExecutor的各个参数的含义,介绍一个任务提交到线程池后的执行流程。corePoolSize:线程池的核心大小,也可以理解为最小的线程池大小。maximumPoolSize:最大线程池大小。keepAliveTime:空余线程存活时间,指的是超过corePoolSize的空余线程达到多长时间才进行销毁。unit:销毁时间单位。workQueue:存储等待执行线程的工作队列。threadFactory:创建线程的工厂,一般用默认即可。h原创 2021-01-28 16:35:15 · 85 阅读 · 0 评论 -
3个线程同时打印ABC 有序执行 30下
题目描述建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。package com.lyr.common.demo.aqs;import java.lang.reflect.Field;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;impo原创 2021-01-28 15:49:14 · 214 阅读 · 0 评论 -
## 等待线程执行完成再 往下执行
使用 join 阻塞import java.util.concurrent.ExecutionException;/** * @Author lyr * @create 2020/9/9 23:41 */// @Slf4jpublic class ConCurrentTest { public static void main(String[] args) throws ExecutionException, InterruptedException { test0原创 2020-09-10 13:20:58 · 328 阅读 · 0 评论 -
查看进程线程的方法
windows:任务管理器查看进程和线程数,也可以杀死进程tasklist 查看进程taskkill 杀死进程linuxps -fe 查看所有进程ps -fT -p PID 查看某个进程 pID 的所有线程kill 杀死进程top 按大写 H 切换是否显示线程top -H -p PID 查看某个进程 PID 的所有线程...原创 2020-09-10 11:22:56 · 372 阅读 · 0 评论 -
juc基础
回顾多线程线程的六个状态 //获取CPU的核数 System.out.println( Runtime.getRuntime() .availableProcessors() );//Thread 的六种状态,枚举 Thread.State.values() public enum State { NEW, RUNNA原创 2020-06-09 19:51:27 · 266 阅读 · 0 评论 -
ThreadLocalRandom的使用
threadLocalRandom转载 2020-04-26 01:17:50 · 199 阅读 · 0 评论 -
使用countDownLatch 模拟高并发场景
package com.company;import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;...原创 2020-04-22 18:57:27 · 316 阅读 · 0 评论 -
JMM模型1
在这里插入图片描述由于 CPU 的 运算速度远远 大于 Main Memory 主存的速度,所以要 使用一个 Cache 来进行缓存cpu和 内存最早的时候 单核 CPU 是这种方法多核CPU的 3级缓存CPU 的缓存分 L1,L2,L3, 他们比内存快,但是贵,只能用作高速缓存,CPU 查找数据的时候先去 L1, 然后去看L2,如果没有就去内存,还有些机器带了 L3 cache,...原创 2020-04-09 13:19:20 · 212 阅读 · 0 评论 -
StampedLock
stampedLock转载 2020-04-08 15:08:42 · 80 阅读 · 0 评论 -
如何捕获线程异常
方法一:重写线程工厂,重写afterExecute 方法方法二:设置一个全局异常处理器public class MyWork { public static void main(String[] args) { ThreadPoolExecutor executor= new ThreadPoolExecutor( ...原创 2019-11-30 12:50:07 · 371 阅读 · 0 评论 -
生产消费模型
下面是生产者和消费者的代码ReentranLock 使用Condition 的 await, signal, signalAll来代替 Synchronized 中的 wait,notify,notifyAll,两者都要 在 代码块里面使用package app;import java.util.*;import java.util.concurrent.locks.Condit...原创 2019-11-12 14:59:21 · 109 阅读 · 0 评论 -
并行流的使用
package app;import java.io.IOException;import java.util.*;import java.util.concurrent.*;/** * @Author lyr * @create 2019/9/30 0:28 */public class Main { static ArrayList<Integer>...原创 2019-11-08 13:33:33 · 295 阅读 · 0 评论 -
jdk 1.8 recursiveTask 的使用
使用方法:1.创建 线程池对象2.创建继承recursiveTask 的类3.commit使用场景:使用 多线程,把大问题分解成小问题,分而治之例如; 有一个长度为 3亿的数组,要求数组的总数可以单线程 for循环遍历也可以递归,拆分这个数组,计算各个部分小数组的值,最后再合并答案代码如下:package app;import java.io.IOException;i...原创 2019-11-08 13:12:48 · 260 阅读 · 2 评论 -
futureTask
使用多线程来计算 1 到 20万里所有的质数public class Main { //1 -> 20万所有的质数 public static void main(String[] args) throws IOException, ExecutionException, InterruptedException { long start = System...原创 2019-11-08 09:13:13 · 89 阅读 · 0 评论 -
中断 和守护线程
线程的状态和中断线程停止线程的方法已过时:stop方法事实是 应该使用 interrupt方法去终断线程看着张图wait 和 sleep对应着线程的等待interrupt并不代表线程的死亡interrupt 中断并不是停止线程而 nterrupet 的功能是:将线程的冻结状态清除,让线程恢复到运行状态关于 interrupt和阻塞态interrupt和cancelinter...原创 2019-09-09 00:02:57 · 228 阅读 · 0 评论 -
线程之间的通信
等待分无限等待和计时等待举个例子我有两个线程 l 和 rl 线程负责 数据的清洗, r线程是负责数据的处理在还没有数据清理之前,是不能进行处理的我可以让 r线程处于无限等待的状态,也就是说当 l线程数据清理完的时候要唤醒 r线程 也就是调用 notify或者 notifyAll 方法,让r线程处理接下来的事务,这就是线程之间的通信wait 方法会让线程处于等待状态,其实就是将线程临时存...原创 2019-09-08 21:35:56 · 127 阅读 · 0 评论