jQuery火箭图标返回顶部代码

随笔分类 -  多线程&JUC

多线程、高并发、JUC
摘要:前言 多线程是每个程序员的噩梦,用得好可以提升效率很爽,用得不好就是埋汰的火葬场。 这里不深入介绍,主要是讲解一些标准用法,熟读唐诗三百首,不会作诗也会吟。 这里就介绍一下springboot中的多线程的使用,使用线程连接池去异步执行业务方法。 由于代码中包含详细注释,也为了保持文章的整洁性,我就不 阅读全文
posted @ 2023-09-19 01:49 天下没有收费的bug 阅读(3616) 评论(0) 推荐(0) 编辑
摘要:开始之前先看看 sleep(long n) 和 wait(long n) 的区别 sleep 是 Thread 方法,而 wait 是 Object 的方法 sleep 不需要强制和 synchronized 配合使用,但 wait 需要和 synchronized 一起用 sleep 在睡眠的同时 阅读全文
posted @ 2022-12-05 09:28 天下没有收费的bug 阅读(30) 评论(0) 推荐(0) 编辑
摘要:4.7 wait/notify 小故事 - 为什么需要 wait 由于条件不满足,小南不能继续进行计算 但小南如果一直占用着锁,其它人就得一直阻塞,效率太低 于是老王单开了一间休息室(调用 wait 方法),让小南到休息室(WaitSet)等着去了,但这时锁释放开,其它人可以由老王随机安排进屋 直到 阅读全文
posted @ 2022-11-14 09:35 天下没有收费的bug 阅读(59) 评论(0) 推荐(0) 编辑
摘要:原理之 synchronized (字节码) static final Object lock = new Object(); static int counter = 0; public static void main(String[] args) { synchronized (lock) { 阅读全文
posted @ 2022-11-09 09:58 天下没有收费的bug 阅读(28) 评论(0) 推荐(0) 编辑
摘要:4.6Monitor概念 java对象头 以 32 位虚拟机为例 普通对象 Mark Word 主要用来存储对象自身的运行时数据 Klass Word 指向Class对象 数组对象 相对于普通对象多了记录数组长度 Mark Word 结构 其中 Mark Word 结构为 不同对象状态下结构和含义也 阅读全文
posted @ 2022-11-08 10:24 天下没有收费的bug 阅读(185) 评论(0) 推荐(0) 编辑
摘要:实例分析 例1 Servlet 是运行在 tomcat 下面的,只有一个实例,会被 tomcat 的多个线程所共享使用,所以里面的成员变量都有可能存在线程安全问题。 public class MyServlet extends HttpServlet { // 是否安全? 不安全 Map<Strin 阅读全文
posted @ 2022-11-07 10:27 天下没有收费的bug 阅读(71) 评论(0) 推荐(0) 编辑
摘要:4.4 变量的线程安全分析 成员变量和静态变量是否线程安全? 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全 如果有读写操作,则这段代码是临界区,需要考虑线程安全 局部变量是否线程安全? 局部变量是线程安全的 但局部变量引用的对象 阅读全文
posted @ 2022-11-04 11:13 天下没有收费的bug 阅读(32) 评论(0) 推荐(0) 编辑
摘要:4.3 方法上的 synchronized 普通方法加锁 方法上加 synchronized 与 synchronized(X) 锁住对象等效 class Test{ public synchronized void test() { } } 等价于 class Test{ public void 阅读全文
posted @ 2022-11-03 14:09 天下没有收费的bug 阅读(303) 评论(0) 推荐(0) 编辑
摘要:4.2 synchronized 解决方案 为了避免临界区的竞态条件发生,有多种手段可以达到目的。 阻塞式的解决方案:synchronized,Lock 非阻塞式的解决方案:原子变量 本次课使用阻塞式的解决方案:synchronized,来解决上述问题,即俗称的【对象锁】,它采用互斥的方式让同一时刻 阅读全文
posted @ 2022-11-02 10:03 天下没有收费的bug 阅读(141) 评论(0) 推荐(0) 编辑
摘要:4.1 共享带来的问题 小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南、小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天24小时使用算盘,他经常要小憩一会(sleep),又或是去吃饭上厕所(阻塞 io 操作),有时还需要一 阅读全文
posted @ 2022-11-01 10:22 天下没有收费的bug 阅读(29) 评论(0) 推荐(0) 编辑
摘要:实战:华罗庚《统筹方法》 统筹方法,是一种安排工作进程的数学方法。它的实用范围极广泛,在企业管理和基本建设中,以及关系复 杂的科研项目的组织与管理中,都可以应用。 怎样应用呢?主要是把工序安排好。 比如,想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶、茶杯要洗;火已生了,茶叶也有了。怎么办? 办 阅读全文
posted @ 2022-10-31 09:04 天下没有收费的bug 阅读(502) 评论(0) 推荐(0) 编辑
摘要:3.12 五种状态 ( 操作系统 层面) 这是从 操作系统 层面来描述的 【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联 【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行 【运行状态】指获取了 CPU 时间片运行中的状态 当 CPU 时间 阅读全文
posted @ 2022-10-28 09:10 天下没有收费的bug 阅读(59) 评论(0) 推荐(0) 编辑
摘要:守护线程 默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。 列如 log.debug("开始运行..."); Thread t1 = new Thread(() -> { log. 阅读全文
posted @ 2022-10-28 09:07 天下没有收费的bug 阅读(41) 评论(0) 推荐(0) 编辑
摘要:3.6 start 与 run 调用 run public static void main(String[] args) { Thread t1 = new Thread("t1") { @Override public void run() { log.debug(Thread.currentT 阅读全文
posted @ 2022-10-27 09:42 天下没有收费的bug 阅读(40) 评论(0) 推荐(0) 编辑
摘要:观察多个线程同时运行 主要是理解 交替执行 谁先谁后,不由我们控制 查看进程线程的方法 windows 任务管理器可以查看进程和线程数,也可以用来杀死进程 tasklist 查看进程 taskkill 杀死进程 linux ps -fe 查看所有进程 ps -fT -p <PID> 查看某个进程(P 阅读全文
posted @ 2022-10-26 09:09 天下没有收费的bug 阅读(93) 评论(0) 推荐(0) 编辑
摘要:方法一:直接使用 Thread // 创建线程对象 Thread t = new Thread() { public void run() { // 要执行的任务 } }; // 启动线程 t.start() 例如 // 构造方法的参数是给线程指定名字,推荐 Thread t1 = new Thre 阅读全文
posted @ 2022-10-25 09:00 天下没有收费的bug 阅读(45) 评论(0) 推荐(0) 编辑
摘要:本章内容 进程和线程的概念 并行和并发的概念 线程基本应用 2.1 进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程序被运行,从磁盘加 阅读全文
posted @ 2022-10-24 09:13 天下没有收费的bug 阅读(27) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示