
并发
文章平均质量分 60
java多线程并发
长臂人猿
进阶的猿猴
展开
-
定时任务框架Quartz简单实例入门
说明Scheduler:Scheduler代表一个调度容器,一个Scheduler可以注册多个JobDetail和Trigger(二者构成一个Scheduler)。JobDetail:表示一个具体的可执行的调度程序,Job是他的具体执行代码。Trigger:调度参数的配置。JobDetail可以对应多个trigger,但是一个trigger只能对应一个job。可参考博文:Quartz 一个JOB 配置多个Trigger时注意的问题代码主程序public class QuartzMain{原创 2021-01-12 17:30:02 · 564 阅读 · 0 评论 -
Redis(十四)Redisson由简到消费实例分析和实现
前言简易demo源自热心网友的代码,稍微修改获取Redisson对象而来。public class RedissonLock { private static final String LOCK_TITLE = "redisLock_"; static RedissonClient redisson; //构造Redisson对象 public static RedissonClient getRedissonObject() { Config config .原创 2020-12-04 15:24:18 · 1484 阅读 · 2 评论 -
四种线程池的拒绝策略及实例
前言当我们需要创建线程池的时候,往往使用Executors工厂创建,实则采用ThreadPoolExecutor来创建。源码Java的多态,源码中有拓展这样一个构造函数,便是追加了RejectedExecutionHandler拒绝策略句柄。官方注解handler the handler to use when execution is blocked because the thread bounds and queue capacities are reached笔者译:原创 2020-11-08 18:34:50 · 913 阅读 · 4 评论 -
线程池基础概念精讲和实例分析
前言当很多东西量级小的时候,许多方法都能够适用,但是如果当一个简单的事务的量级上去了,那便是一个问题,这里的单位量级我们指线程。画外音((疯狂暗示BD))产生线程池的原因1、针对反复创建线程开销大的问题,线程池用一些固定的线程一直保持工作状态并反复执行任务。【上文创建进程所消耗的资源】2、针对过多线程占用太多内存资源的问题,解决思路更直接,线程池会根据需要创建线程,控制线程的总数量,避免占用过多内存资源。【线程数量过多】比如说,(FixedThreadPool)线程池固定五个原创 2020-11-08 18:33:42 · 368 阅读 · 2 评论 -
常用的六种线程池实例和源码及阻塞队列
目录前言常用的六种线程FixedThreadPool详细构造FixedThreadPool实例代码CachedThreadPoolScheduledThreadPoolSingleThreadExecutorSingleThreadScheduledExecutorForkJoinPool缓存队列小结前言详细构造里面的参数分别为:int corePoolSize, int maximumPoolSize, long keepAliveTime, Time.原创 2020-11-08 18:32:17 · 1418 阅读 · 1 评论 -
匿名对象的值传递
前言在学习线程池的时候,发现采用创建匿名对象的时候,匿名对象内外的传递并非形参通用传递。这不经让我回忆起在校期间用SWING编写的一个socket音乐播放器在监听器里面也遇到过同样的问题:JList实现随意切换歌曲、更新线程以及问题分析,时间久远了,应该是采用全局变量解决的,当初以为是十天的课设,时间仓促,未来得及深究。这次来分析一下。原创 2020-11-08 14:31:55 · 755 阅读 · 4 评论 -
详细解析死锁形成的原因
首先,了解死锁,先简略了解,代码块的锁:synchronized (对象){} 锁住参数对象。 synchronized对象和内容访问单一; 简略扫过一下,死锁和非死锁代码:死锁:class Zhangsan{ // 定义张三类 public void say(){ System.out.println("张三对李四说:“你给我画,我就把书给你。”") ; } p...原创 2018-05-11 21:30:25 · 306 阅读 · 1 评论 -
讲讲多线程的线程安全是怎么回事
当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行问题,也不需要进行额外的同步,而调用这个对象的行为都可以获得正确的结果,那这个对象便是线程安全的。发布和初始化导致线程安全问题运行结果错误死锁、活锁和饥饿。...原创 2020-05-29 01:28:13 · 320 阅读 · 0 评论 -
通俗的深入解析notify()/notifyAll()和wait()方法
- notify()/notifyAll()和wait()notify()/notifyAll()唤醒单个/所有使用了wait()方法的线程,他们三个一般再synchronized锁住的代码块里面使用,所以说唤醒wait()的方法可不止一个哦~...原创 2020-04-13 00:54:27 · 1772 阅读 · 2 评论 -
JAVA线程基础看这篇文章就够了
JAVA线程基础看这篇文文章就够了进程和线程生命周期和五种状态:多线程的实现多线程运行机制资源共享Thread的常用方法同步和死锁同步如何解决?死锁进程和线程进程-进程是程序的一次动态执行过程,每个进程都有自己独立的内存空间。由操作系统的知识我们知道了,单核CPU一般通过时间片轮转的方法,将CPU的不同使用时间段分配给不同的进程,这样可以使得所有程序都在同时运行一样。线程线程是进...原创 2020-04-11 23:20:16 · 338 阅读 · 2 评论 -
并发之volatile标记位为何不适合于停止线程且与interrupt中止线程原理
volatile标记位为何不适合于停止线程且与interrupt的关系Volatile解释Volatile标记位实现停止线程非一定条件下的volatile标记位Interrupt中止线程原理Volatile解释volatile 是一个类型修饰符,作为一个指令关键字使用。如: public volatile boolean is_stop = false; volatile 保证修饰数据可见性...原创 2020-04-07 13:24:32 · 575 阅读 · 2 评论