一 什么是Semaphore、Semaphore用来做什么 semaphore是计数信号量,可用于多线程并发执行时,限制获取资源的线程数量。常用场景为:限流。 二 Semaphore用法 1 public class SemaphoreTest { 2 3 public static void ma ...
分类:
其他好文 时间:
2020-06-03 00:59:30
阅读次数:
72
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同 ...
分类:
编程语言 时间:
2020-05-30 20:15:53
阅读次数:
78
程序的顺序执行如下图,其中I代表输入,C代表计算,P代表打印。程序顺序执行时的特征有顺序性、封闭性(独占全机资源)、可再现性。 程序的并发执行如下图,其中I代表输入,C代表计算,P代表打印。输入程序在输入第一个程序后,在计算程序对该程序进行计算的同时,可由输入程序再输入第二个程序,从而使第一个程序的 ...
分类:
系统相关 时间:
2020-05-30 10:31:15
阅读次数:
272
线程池 “线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。 Executors 工具类 常用方法 返回值 方法名 说明 Exe ...
分类:
编程语言 时间:
2020-05-28 19:43:05
阅读次数:
56
通过JDK自带工具实现一个间隔并发执行的定时任务,代码如下: public class Test{ public static void main(String[] args) { ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = n ...
分类:
其他好文 时间:
2020-05-24 21:18:52
阅读次数:
82
大多数的应用程序都使用多线程技术。对应Windows应用程序,为了能够使用户界面保持快速响应,经常需要把费时的任务放在与主应用程序独立的线程上运行。此时,多个线程的并发执行调试变得很困难,特别是在多个线程访问同一个类和方法时。Threads能够帮助我们减轻复杂度。 打开窗口 一般来说当程序遇到断点进 ...
分类:
其他好文 时间:
2020-05-12 09:21:55
阅读次数:
66
等待与唤醒机制 1、线程间通信 概念:多线程在处理同一个资源,但是处理的动作却不相同。 为什么处理线程间通信? 多线程并发执行时,在默认情况下CPU是随机切换线程的,当我们需要多线程来共同完成一件任务,并且我们希望他们有规律的执行,那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数 ...
分类:
其他好文 时间:
2020-05-05 19:40:23
阅读次数:
59
1、Parallel.Invoke 主要用于任务的并行 这个函数的功能和Task有些相似,就是并发执行一系列任务,然后等待所有完成。和Task比起来,省略了Task.WaitAll这一步,自然也缺少了Task的相关管理功能。它有两种形式: Parallel.Invoke( params Action ...
HashMap的线程不安全主要体现在下面两个方面: 在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况。 扩容逆序和环形:见上一篇文章中的头插法以及bilibili视频,https://www.bilibili.com/video/BV1vE411v7cR?p=4 数据丢失: 在JD ...
分类:
编程语言 时间:
2020-05-03 14:28:54
阅读次数:
158
Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞。 在Spring中这时需要设置concurrent的值为false, 禁止并发执行。 <property name="concurrent" valu ...
分类:
其他好文 时间:
2020-04-26 22:34:39
阅读次数:
180