多线程
文章平均质量分 81
ordinaryBlog
offer offer快快来
展开
-
RocketMQ 如何实现顺序消息
如何实现顺序消息默认无法保证顺序消息需要程序保证发送和消费的是同一个 Queue(多线程消费也无法保证)生产者: 发送端保证发往一个固定的 queue ,生产者可以在消息体设置消息的顺序。可以选择 实现 MessageQueueSelector 选择一个 Queue 进行发送也可以选择 RocketMQ 的默认实现SelectMessageQueueByHash:按参数的 HashCode 与可选队列进行求余选择producer.send(msg,new SelectMessa原创 2022-04-05 15:24:37 · 2100 阅读 · 0 评论 -
Java 中的线程同步方案
Java 中的线程同步方案|线程安全的实现方法同步是指在多个线程并发访问共享数据时保证共享数据在同一时刻只被一条线程使用。1. 互斥同步即阻塞同步临界区、互斥量、信号量都是常见的互斥实现方式。在 Java 中,最基本的同步方式就是 synchronized 关键字被 synchronized 修饰的同步块对同一条线程来说是可重入的。这意味着同一线程反复进入同步块也不会出现自己把自己锁死的情况被 synchronized 修饰的同步块在持有锁的线程执行完毕并释放锁之前,会无条件的阻塞后面其他原创 2022-03-21 21:08:29 · 533 阅读 · 0 评论 -
偏向锁、轻量级锁、重量级锁加锁过程即锁升级膨胀过程
偏向锁、轻量级锁、重量级锁加锁过程即锁升级膨胀过程synchronized偏向锁为什么要引入偏向锁偏向锁加锁过程线程获取到锁对象的偏向锁之后,执行完同步代码块之后,会释放这个偏向锁吗使用了偏向锁就一定会提升性能吗轻量级锁为什么要引入轻量级锁轻量级锁的加锁过程(从无锁状态)锁重入轻量级锁释放轻量级锁与偏向锁之间的区别偏向锁升级到轻量级锁的过程重量级锁重量级锁内部的主要数据结构线程获取锁的流程重量级锁的释放线程唤醒策略重量级锁是公平锁吗锁膨胀成重量级锁的过程synchronized偏向锁为什么要引入偏向锁原创 2022-03-15 10:06:28 · 1646 阅读 · 2 评论 -
多线程通信之ThreadLocal
ThreadLocal详解ThreadLocal作用应用场景运行过程优点ThreadLocal原理:initialValue()get()ThreadLocalMap类ThreadLocalMap中的value泄露如何避免 内存泄露ThreadLocal注意点ThreadLocal作用使线程中的某个值,与保存值的对象关联起来。通常用于防止可变的单实例变量或全局变量进行共享应用场景每个线程需要一个共享的对象(通常是工具类)每个线程内需要保存全局变量运行过程在ThreadLocal第一次调用g原创 2021-09-06 17:22:50 · 241 阅读 · 0 评论 -
Java多线程部分(基础八股)
Java多线程部分 基础知识实现多线程的方法(3种):区别:一个线程两次调用start()方法会怎样?start方法的含义:start方法的启动过程:如何正确的停止线程?注意:在while中使用try/catch,会导致中断失败如何处理不可中断的阻塞?线程的生命状态:为什么wait()需要在同步代码块中使用,而sleep()不需要?wait和sleep方法的异同为什么wait.notify和notifyAll被定义在Object类里,而sleep定义在Thread类里?join方法yield方法守护线程和普原创 2021-08-20 21:43:44 · 211 阅读 · 0 评论 -
Java中的线程池
Java中的线程池为什么使用线程池?使用线程池的优点:线程池的创建:参数意义:巧妙设置参数工作队列Executor框架线程池中的线程数目设定为多少比较合适?线程池状态线程池的操作拒绝任务拒绝时机拒绝策略线程池的组成部分使用线程池的注意点为什么使用线程池?反复创建线程开销较大过多的线程会占用太多的内存使用线程池的优点:降低资源消耗(重复利用已创建的线程)提高响应速度集中控制线程池的创建:new ThreadPoolExecutor(corePoolSize,maximumPoolSi原创 2021-09-06 16:02:13 · 257 阅读 · 0 评论 -
Java内存模型
什么是Java内存模型?Java内存模型简称JMM,是一组规范,需要各个JVM的实现来遵守JMM规范,以便于开发者可以利用这些规范,方便的开发多线程程序。Java线程之间的通信由JMM控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。重排序:重排序分为3种类型:编译器优化的重排序CPU指令重排内存系统的重排序重排序可能会导致多线程程序出现内存可见性问题可见性:为什么会有可见性问题?JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私原创 2021-08-23 20:51:57 · 75 阅读 · 0 评论