随笔分类 - 高并发与多线程
摘要:1、线程调度 1.1 抢占式调度 抢占式调度是指每个线程都以抢占的方式获取CPU资源并快速执行,在执行完毕后立即释放CPU资源。在抢占式调度模式下,每个线程对CPU资源的申请地位是相等的,一个线程堵塞不会导致整个进程性能下降,具体流程如图: 1.2 协同式调度 协同式调度是指某个线程在执行完毕后主动
阅读全文
摘要:1、Java并发关键字 1.1 CountDownLatch CountDownLatch基于线程计数器来实现并发访问控制,主要用于主线程等待其他子线程都执行完毕后执行相关操作。 以一个主任务等待两个子任务完成为例: final CountDownLatch countDownLatch = new
阅读全文
摘要:1、线程上下文切换 线程的上下文切换:任务的状态保存及在加载。 上下文:线程切换时CPU寄存器和程序计数器所保存的当前线程信息。 寄存器:CPU内部容量较小但速度很快的内存区域。寄存器通过对常用值的快速访问来加快计算机程序运行的速度。 程序计数器:一个专门的寄存器,用于表明指令序列中CPU正在执行的
阅读全文
摘要:1、锁的作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。 在多线程编程中为了保障数据的一致性,通常需要在使用对象或者方法之前加锁,这时如果有其他线程也需要使用该对象或方法。则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会进入阻塞队列等待锁的释放,直到其他线程执行完成并释放锁,
阅读全文
摘要:1、线程池工作原理 Java线程池主要用于管理线程组及其运行状态。其主要作用是线程复用、线程资源管理、控制操作系统的最大并发数。 Java线程池的工作原理:JVM先根据用户的参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果线程数量超过了最大线程数量,则超出数量的线
阅读全文
摘要:1、Java线程的创建方式 常见的Java线程的4种创建方式: 继承Thread类 实现Runnable 通过ExecutorService和Callable<Class>实现由返回值的线程 基于线程池 1.1 继承Thread类 Thread类实现Runnable接口并定义了操作线程的一些方法,可
阅读全文
摘要:1、为什么要用消息队列 解耦、异步、削峰 A系统调用B系统、C系统,传统的调用是直接调用,但是当B系统说我不需要你提供数据了,这时候A需要改代码,C系统说我不需要某个字段了,这时候A也要改代码,如果又多了一个D系统,A又要写代码。为了实现解耦,引入消息队列,A将产生的数据丢到消息队列中,哪个系统需要
阅读全文
摘要:1、进程,线程之间的区别 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元。 线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位.同一进程中的多个线程之间可以并发执行。多个线程共享内存资源,减少
阅读全文

浙公网安备 33010602011771号