
并发编程
文章平均质量分 79
啊勇的博客
一位技术小白,努力成为技术大牛
展开
-
线程池的底层原理
new Thread().start(); 1. 线程的频繁创建好销毁 2. 线程的数量过多,会造成CPU资源的开销。 上下文切换 (消耗CPU资源)使用线程池进行线程复用线程池提前创建一系列的线程,保存在这个线程池中。(核心线程) 有任务要执行的时候,从线程池中取出线程来执行。 没有任务的时候,线程池放回去。Java中提供的线程池Executors1,newFixedThreadPool 固定线程数量public static ExecutorService newFixed原创 2021-12-27 17:59:30 · 1385 阅读 · 0 评论 -
同步锁 Synchronized底层原理
如果多个线程在做同一件事情的时候。原子性 Synchronized, AtomicXXX、Lock、 可见性 Synchronized, volatile 有序性 Synchronized,volatile在上面这段代码中,多个线程同时对多个线程添加,count++是属于Java高级语言中的编程指令,而这些指令最终可能会有多条CPU指令来组成,而count++最终会生成3条指令, 通过javap -v xxx.class 查看字节码指令如下。会出现实际结果却是小于等于20000的值。publ原创 2021-12-27 17:55:07 · 1689 阅读 · 0 评论 -
Java内存模型JMM
什么是JMM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。内存划分 JMM规定了内存主要划分为主内存和工作内存两种。此处的主内存和工作内存跟JVM内存划分(堆、栈、方法区)是在不同的层次上进行的,如果非要对应起来,主内存对原创 2021-12-28 16:52:32 · 282 阅读 · 0 评论 -
并发线程的启动终止底层原理
线程启动原理线程的start方法,实际上底层做了很多事情,OS调度算法有很多,比如先来先服务调度算法(FIFO)、最短优先(就是对短作业的优先调度)、时 间片轮转调度等。线程的生命周期线程终止原理stop、suspend等,这些方法可以终止一个线程或者挂起一个线程,但是这些方法都不建议使用。原因比较简单如果调用stop方法去强行中断,那么这个时候相当于是发送一个指令告诉操作系统把这个线程结束掉,如果线程的任务执行了一半操作系统强制中断线程,导致线程任务只执行了一般,最终导致数原创 2021-12-27 17:51:18 · 169 阅读 · 0 评论