
Java多线程及并发编程
文章平均质量分 57
多线程及并发编程学习总结
benboerdong
跳出舒适圈,做时代的弄潮儿。
The Show Must Go On ...
展开
-
Java多线程总结目录
Java多线程总结目录 Java多线程总结目录 多线程知识总结 多线程知识总结原创 2021-05-27 10:42:08 · 113 阅读 · 0 评论 -
多线程知识总结
多线程 什么是进程和线程? 进程:进程是程序的一次执行过程,是系统运行程序的基本单位。系统运行一个程序即是进程从创建、运行、消亡的过程。 线程:线程和进程相似,但线程是比进程更小的执行单位。一个进程在执行过程中可以产生多个线程。这些线程共享进程的堆和方法区,同时拥有各自的计数器、虚拟机栈、本地方法栈。 ...原创 2021-02-19 22:39:16 · 191 阅读 · 0 评论 -
多线程入门实例(一)
多线程入门示例: 1: 验证两个线程在同时操作同一个变量,一增一减,最终结果是否为初始值? package com.weidd.best.multiThread; import org.junit.Test; /** * @program: SortDemo * @author: weidd * @date: 2021-02-20 10:29 **/ public class ThreadTest1 { //定义一个成员变量初始值为0 private int numbe原创 2021-02-20 15:56:43 · 318 阅读 · 5 评论 -
多线程使用实例(二)
实例一:多窗口售票 package com.weidd.best.multiThread; import sun.jvm.hotspot.runtime.Threads; /** * @program: SortDemo * @author: weidd * @date: 2021-02-19 23:22 * @description 模拟多线程售票 **/ public class SaleTicket { public static void main(String[] ...原创 2021-02-19 23:57:34 · 205 阅读 · 0 评论 -
synchronized总结
查看synchronized修饰过的代码块编译后的字节码,会发现被synchronized修饰过的代码块前后会生成两个字节码指令:monitorenter、monitorexit; 这两个字节码指令的含义:当JVM执行到monitorenter和monitorexit两个指令实现同步。 monitorenter : 每个对象都与一个监视器锁(monitor)相关联,monitor才会被锁定。线程执行monitorenter指令时会尝试获取monitor的所有权。 每个对象维护者一个记录着被锁定次数的计数原创 2021-03-01 23:15:25 · 1587 阅读 · 0 评论 -
Java线程池总结
线程池整理 为什么要使用线程池? 实际使用中线程是很占系统资源的,如果对线程的管理不当很容易导致系统崩溃。大多数并发框架都会使用线程池。好处: 1.降低资源消耗:通过复用已创建的线程降低线程创建和销毁造成的性能损耗; 2.提升系统的响应速度:任务到达,可以不再等待线程创建极大提升响应速度; 3.提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以进行统一的分配,调优和监控。 未完待续~ ...原创 2021-03-14 15:37:30 · 113 阅读 · 0 评论 -
乐观锁悲观锁死锁
1.死锁 : 所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待) 死锁产生的条件 (1)互斥条件。进程对所分配到的资源进行排他性使用,即在一段时间内,某资源只能被一个进程占用。如果此时还有其他进程请求该资源,则请求进程只能等待,直至占有该资源的进程用毕释放。 (2)请求和保持条件。进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞...原创 2019-03-05 22:37:41 · 1278 阅读 · 0 评论 -
Volatile关键字
Volatile关键字 Volatile是什么? Volatile如何保证可见性的? 核心思想是:当CPU写数据的时候,如果发现操作的变量是共享变量,即在别的CPU中存有该变量的副本,会发出信号通知其他CPU将该变量的缓存置为无效的状态,当其他CPU需要读取该变量时,发现本地缓存中的变量是无效的,则重新从主内存中加载。 ...原创 2021-04-24 18:05:19 · 104 阅读 · 0 评论 -
线程状态验证
线程的状态 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } 验证状态 NEW 新建线程 Thread thread = new Thread(() -> { }); System.out.println(thread.getState()); Runnable 运行状态(包括ready和running) Thread thread = new Threa原创 2021-03-04 14:40:50 · 182 阅读 · 1 评论 -
Junit在多线程中遇见的坑
Junit单元测试不支持多线程。。 当Thread了新的线程后,Junit单元测试 在主线程运行结束后就关闭了,而不会等子线程运行结束。而main函数就不存在这个问题了...原创 2021-02-22 15:51:13 · 469 阅读 · 2 评论