
多线程和高并发
文章平均质量分 86
bestcxx
向外思考,向上生长,锲而不舍,金石可镂
展开
-
常见的限流算法
常见的限流算法用于控制系统的请求流量,防止过载。原创 2025-03-14 09:30:48 · 312 阅读 · 0 评论 -
0.9.4、线程池—— ThreadPoolExecutor.execute 处理逻辑
文章目录前言接口 Executor.execute(Runnable command);ThreadPoolExecutor.executeThreadPoolExecutor.submitThreadPoolExecutor.execute 源码流程图前言在 线程池——核心线程数、阻塞队列、最大线程数之间的关系 中我们从运行流程层面了解了线程池处理任务的顺序。在 ThreadPoolExecutor 的基础变量 ctl 、 runState 和 workerCount 中,我们对线程中比较关键的几个原创 2021-12-19 18:07:44 · 5817 阅读 · 0 评论 -
0.9.3、线程池—— ThreadPoolExecutor 的基础变量 ctl 、 runState 和 workerCount
线程池1、一些基础知识1.1、真值、机器数(原码、反码和补码)1.2、与、或、异或、非运算1.3、位移运算 <<、>>和>>>2、Java 线程池中的一些基础变量ThreadPoolExecutor1、一些基础知识1.1、真值、机器数(原码、反码和补码)真值:就是现实世界的值机器数:计算机世界中的数字,原码、反码和补码都是机器数的一种原码:真值变为原码就是,首位表示正负,0为正,1为负,值的部分变为二进制反码:正数的反码是其本身,负数的反码是除符号位外其原创 2021-12-12 16:17:58 · 1196 阅读 · 0 评论 -
0.9.2、线程池——核心线程数、阻塞队列、最大线程数之间的关系
文章目录线程池内部运行过程验证思路确保先提交的任务优先被线程池处理确保执行的任务占有足够久的线程池资源可观测的阻塞队列大小充分的信息代码自定义线程池结果结论基本几结论新任务提交在线程池内部处理的优先级线程池内部运行过程线程池的初始参数中包含 核心线程数、最大线程数、线程池线程空闲回收时间、阻塞队列、线程工厂、拒绝策略。那么线程池是如何管理线程和阻塞队列的关系呢?验证思路确保先提交的任务优先被线程池处理多线程执行本身是无序的,原因在于并发操作下,后面提交的任务也可能被先运行,因此,为了确保先提交的原创 2021-12-05 17:17:49 · 5101 阅读 · 0 评论 -
0.9.1、自定义线程池
文章目录描述应用知识点代码MavenJava参考资料描述自定义线程池可以帮助我们掌握更多的线程自主权,方便于后期代码的维护和问题的排查。应用知识点自定义线程池线程工厂线程池关闭线程池最佳线程数在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式: Nthreads = Ncpu x Ucpu x (1 + W/C),其中 Ncpu = CPU核心数 Ucpu = CPU使用率,0~1 W/C = 等待时间与计算时间的比率pu原创 2020-07-18 23:04:48 · 282 阅读 · 0 评论 -
0.9.2、自定义线程池结合CyclicBarrier
文章目录描述应用知识点代码运行结果参考资料描述使用自定义线程池,模拟三个人上车应用知识点自定义线程池线程工厂线程池无法使用 join,使用 Future线程安全的 List: Collections.synchronizedListCyclicBarrier线程池关闭代码import com.google.common.collect.Lists;import org.apache.curator.shaded.com.google.common.util.concurrent.原创 2020-06-10 17:21:42 · 423 阅读 · 0 评论 -
0.7、多线程学习—— Thread.yield() 你可以先来-一般多用于测试阶段
yield() 只是说本线程不是那么重要,可以让出当前资源,但是至于调度程序是否调度,是另一回事情,即本线程未必会真的让出资源再一个就是,即使本线程让出资源了,可能再次获取到资源. 所以 调用yield() 的线程可能会继续执行.原创 2019-08-16 22:32:39 · 419 阅读 · 0 评论 -
11.2、Spring源码学习 ——SpringMVC 之 DispatcherServet 的 init()方法
文章目录前言DispatcherServet 间接 继承了 HttpServletHttpServlet 基本介绍HttpServlet 的基本特性HttpServlet 的使用方法前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。DispatcherServet 间接 继承了 HttpServletDispatcherServet 间接 继承了 HttpServlet , 从...原创 2019-08-27 23:35:37 · 321 阅读 · 0 评论 -
0.7、多线程学习——信号量 Semaphore
信号量属于同步工具类,通过指定一个数字来限定同时访问一个特定资源的线程的数量原创 2019-08-07 08:50:10 · 175 阅读 · 0 评论 -
0.5、多线程学习——启动线程时 thread.run() 和thread.start()的区别
文章目录前言声明线程对象 必须 覆盖重写 run() 方法启动线程时 thread.run() 和thread.start()的区别代码举例前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。声明线程对象 必须 覆盖重写 run() 方法声明线程对象 必须 覆盖重写 run() 方法Thread t2=new Thread() { @Override public void...原创 2019-08-02 11:44:55 · 253 阅读 · 0 评论 -
5.2、多线程学习——栅栏的一个实现 CyclicBarrier
CyclicBarrier 属于同步工具类顾名思义,循环栅栏,闭锁的计数器一旦递减为0就进入终态了,CyclicBarrier也是基于计数器,但是其计数器在递减为0后,进行一次指定事件的运行后放行所有被其阻塞的线程后,计数器恢复为初始值,然后可以从新开始进行递减操作——阻塞相应的线程。原创 2019-08-01 23:05:30 · 370 阅读 · 0 评论 -
5.1、多线程学习——闭锁的一个实现 CountDownLatch
文章目录场景代码结果场景三个人需要坐船到一个小岛种树,需要等三个人都到了才能出发代码import java.util.concurrent.CountDownLatch;/** * 使用 CountDownLatch * 场景:三个人需要坐船到一个小岛种树,需要等三个人都到了才能出发 * @author jie.wu * */public class CountDow...原创 2019-08-01 22:51:02 · 146 阅读 · 0 评论 -
1.0、多线程学习——线程的状态 java.lang.Thread.State
文章目录前言从操作系统层面谈线程的状态进程和线程的简单介绍从宝贵的CPU资源来谈线程的状态进程和线程的状态Java 的跨平台特性Java 中线程的状态java.lang.ThreadJava 中线程的状态参考资料前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。从操作系统层面谈线程的状态进程和线程的简单介绍在操作系统中,进程是资源分配基本单位,线程是CPU调度基本单位一个进...原创 2019-07-29 08:33:19 · 1156 阅读 · 0 评论 -
Java ThreadLocal解决线程安全问题
TLS:Thread Local Storage 转载自http://blog.csdn.net/jiht594/article/details/6606326 TLS全称为Thread Local Storage,是Windows为解决一个进程中多个线程同时访问全局变量而提供的机制。TLS可以简单地由操作系统代为完成整个互斥过程,也可以由用户自己编写控制信号量的函数。当进程中转载 2017-02-10 23:11:56 · 1891 阅读 · 0 评论 -
0.0、多线程学习——谈谈对多线程的看法,随着了解的加深而不断补充和修正
1、多线程的创建一共有三种方式,一是继承 Thread 类,二是实现 Runnable 接口,然后借助 Thread (Target) 构造方法进行多线程的实例化,都需要覆盖重写内部的 run() 方法,使用start()方法调用,这两种方式都是没有返回结果的。还有第三种,实现Callable<T> 接口,覆盖重写 call()方法,然后需要配合FutureTask<T>使...原创 2017-06-21 23:08:38 · 1217 阅读 · 1 评论 -
如何在for循环中使用多线程
import java.util.concurrent.Executor;import java.util.concurrent.Executors;public class Test {private final static Executor executor = Executors.newCachedThreadPool();//启用多线程public static void mai...原创 2015-10-28 17:17:32 · 17156 阅读 · 1 评论 -
0.2、多线程学习——提供一个经典场景
文章目录前言多线程的用途提供一个基本的场景基本场景——三人种树扩展场景——分工种树扩展场景的多样性前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。多线程的用途事实上,多线程一般用于异步处理程序或者服务器端应用程序。异步处理程序比如GUI图形程序、对文本文件的遍历、对图形数据的分析等。服务端应用比如tomcat等等。从个人的角度来说,也可以用于后台跑批的任务。提供一个基...原创 2019-07-19 07:52:22 · 143 阅读 · 0 评论 -
0.1、多线程学习——线程的几个基本概念
文章目录前言概念集合进程和线程同步(Synchronous)和异步(Asynchronous)临界区线程的状态和转化参考资料前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。概念集合进程和线程进程是操作系统中的一个概念,是资源分配的最小单位;线程是程序运行的最小单位,多个线程可以共享一个进程的资源;进程的资源分配和回收代价都远大于线程;尽管是线程,其资源的分配和回收也是需...原创 2019-07-17 21:32:36 · 169 阅读 · 0 评论 -
0.3、多线程学习——volatile 的最佳实践
文章目录前言Java 内存模型的介绍线程的可见性和线程的有序性volatile 解决了两个问题:可见性和防止指令重排参考资料前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。Java 内存模型的介绍如果对Java 内存模型有所了解可以略过本段,否则建议移步:Java 内存模型与8种基本操作、原子性、可见性、有序性线程的可见性和线程的有序性简单来说,可见性就是 本线程对工作...原创 2019-07-25 08:42:25 · 261 阅读 · 0 评论 -
0.4、多线程学习——内置锁(监视器锁)、对象 和 Synchronized 代码块
文章目录前言Synchronized 同步代码块对象和内置锁(监视器锁)synchronized 的两种用法用 synchronized 修饰一个方法前言体能状态先于精神状态,习惯先于决心,聚焦先于喜好。Synchronized 同步代码块Java 提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block).对象和内置锁(监视器锁)synchron...原创 2019-07-27 10:33:48 · 604 阅读 · 1 评论 -
0.8、多线程学习——FutureTask
文章目录前言FutrueTask为 FutrueTask 增加自定义代码逻辑实现 Callable 接口并对象传入 FutureTask 构造函数FutureTask 的启动使用 Thread.start() 执行 FutureTask使用线程池执行 FutureTask线程池和 FutureTask 类线程池和 Future 接口FutureTask.get()FutureTask.get() ..................原创 2019-08-08 09:12:11 · 1320 阅读 · 1 评论 -
0.6、多线程学习—— Thread.join() 等等我,马上到
文章目录join代码joinWaits for this thread to die即运行该代码的线程需等待 t线程运行结束如果在主线程运行,则主线程等待,如果在子线程运行,则子线程等待代码public class JoinTest { public static void main(String[] args) { Thread t=new Thread() { ...原创 2019-08-05 22:31:51 · 199 阅读 · 0 评论 -
java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
转载自:http://www.cnblogs.com/yanghuahui/p/3365922.htmlsynchronized用于多线程设计,有了synchronized关键字,多线程程序的运行结果将变得可以控制。synchronized关键字用于保护共享数据。synchronized实现同步的机制:synchronized依靠"锁"机制进行多线程同步,"锁"转载 2017-02-10 23:40:02 · 908 阅读 · 0 评论