背景 最近在看同事的消息平台的问题进行优化,其中一点就是推送来的消息没有区分优先级,造成实时性要求高的不能优先满足,被全网下发的普通优先级占用了,造成消息延迟。 对应的改进一点就是采用把现有线程池改为优先级队列。 实现 …
分类:java并发
利用PriorityBlockingQueue实现线程池中带优先级的线程
转自https://www.chenx.tech/priority-blocking-queue/ 简单来说,方案一: public class Task implements Runnable, Comparable&…
java并发编程(6)显式锁
显式锁 一、Lock与ReentrantLock Lock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有的加锁和解锁方法都是显式的 ReentrantLock实现了Lock:并提供了…
Java高并发编程(二)
一、高并发编程的几个部分 synchronized同步器、jdk提供的同步容器、ThreadPool线程池、executor执行器 二、重入锁 1.reentrantloc…
java线程池Executor&ThreadPool
java自1.5版本之后,提供线程池,供开发人员快捷方便的创建自己的多线程任务。下面简单的线程池的方法及说明。 1、Executor 线程池的顶级接口。定义了方法execute(Runnabl…
Java程序中的死锁
什么是死锁? 死锁是一种特定的程序状态,主要是由于循环依赖导致彼此一直处于等待中,而使得程序陷入僵局,相当尴尬。死锁不仅仅发…
Java中线程的学习(四)——线程的进阶应用(涉及锁、经典卖票案列)
下面进行线程的进阶应用 ①需求:计算任务,一个包含了2万个整数的数组,分拆了多个线程来进行并行计算,最后汇总出计算的结果。 public class Count { public static void main(Str…
Java多线程系列 JUC锁11 Semaphore信号量的原理和示例
转载 http://www.cnblogs.com/skywang12345/p/3534050.html
Thread类源码解读(3)——线程中断interrupt
前言 线程中断是一个很重要的概念,通常,取消一个任务的执行,最好的,同时也是最合理的方法,就是通过中断。 本篇我们主要还是通过源码分析来看看中断的概念。 本文的源码基于JDK1.8 Interrupt status &a…
java同步锁中synchronized和Lock接口类的区别
Lock提供了和synchronized类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然Lock缺少了synchronized隐式获取释放锁的便捷性,但是却拥有了锁获取与是释放的可操作性、可中断的获取锁以及超时获…
Java synchronized之“可重入锁”
概念 可重入锁:自己可以再次获取自己的内部的锁。比如有线程A获得了某对象的锁,此时这个时候锁还没有释放,当其再次想获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。 可重入锁也支持在父子类继承的环境…
java并发J.U.C AtomicReference VS Volatile
SpinLock实现,摘自并发编程网 package com.juc.simple; import java.util.concurrent.atomic.AtomicReference; /** * a impleme…