背景 最近在看同事的消息平台的问题进行优化,其中一点就是推送来的消息没有区分优先级,造成实时性要求高的不能优先满足,被全网下发的普通优先级占用了,造成消息延迟。 对应的改进一点就是采用把现有线程池改为优先级队列。 实现 …
标签:Java多线程
高并发,如何提高并发量
一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response T…
高并发,如何提高并发量
一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response T…
Java线程的优先级
线程的优先级 线程优先级:getPriority() setPriority(int x) Java提供了一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度那个线程来执行。 线程的优…
Thread类源码解读(1)——如何创建和启动线程
前言 谈到线程同步与通信,线程本身的概念是绕不开的,而进程和线程的概念已经是老生常谈的话题了,一些基本的概念本文就不再讨论了,本篇仅仅致力于通过源码,了解线程的构造与启动,从而更深入的了解线程。 本文源码基于jdk1.8…
Thread类源码解读(2)——线程状态及常用方法
前言 上一篇我们讨论了线程的创建,本篇我们来聊一聊线程的状态转换以及常用的几个比较重要的方法。 本篇依然是通过源码分析来了解这些知识。 本文源码基于jdk1.8 。 阅读完本文,你应当有能力回答以下常见面试题: 线程有哪…
Thread类源码解读(3)——线程中断interrupt
前言 线程中断是一个很重要的概念,通常,取消一个任务的执行,最好的,同时也是最合理的方法,就是通过中断。 本篇我们主要还是通过源码分析来看看中断的概念。 本文的源码基于JDK1.8 Interrupt status &a…
逐行分析AQS源码(1)——独占锁的获取
前言 AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。 AQS虽然…
逐行分析AQS源码(2)——独占锁的释放
前言 上一篇文章 我们逐行分析了独占锁的获取操作, 本篇文章我们来看看独占锁的释放。如果前面的锁的获取流程你已经趟过一遍了, 那锁的释放部分就很简单了, 这篇文章我们直接开始看源码. 开始之前先提一句, JAVA的内置锁…
逐行分析AQS源码(3)——共享锁的获取与释放
前言 前面两篇我们以ReentrantLock为例了解了AQS独占锁的获取与释放,本篇我们来看看共享锁。由于AQS对于共享锁与独占锁的实现框架比较类似,因此如果你搞定了前面的独占锁模式,则共享锁也就很容易弄懂了。 共享锁…
逐行分析AQS源码(4)——Condition接口实现
前言 本篇文章是基于线程间的同步与通信(4)——Lock 和 Condtion 这篇文章写的,在那篇文章中,我们分析了Condition接口所定义的方法,本篇我们就来看看AQS对于Condition接口的这些接口方法的具…
线程间的同步与通信(1)——同步代码块Synchronized
前言 同步代码块(Synchronized Block) 是java中最基础的实现线程间的同步与通信的机制之一,本篇我们将对同步代码块以及监视器锁的概念进行讨论。 什么是同步代码块(Synchronized Block)…