java多线程
CringKong
高级语言生产,底层思维学习
展开
-
Java多线程--1.启动、休眠、优先级
仅作为Java多线程的复习梳理笔记,如果有错误希望大家批评指出1.使用Java多线程继承Thread类:public class MyThread extends Thread{ @Override public void run() { // 重写run()方法,这个方法就是线程进入running状态后要运行的方法 super.run();原创 2018-04-18 18:08:27 · 437 阅读 · 0 评论 -
Quartz源码分析(上)
文章目录1.一个想法2.Quartz总体架构2.1 Job和JobDetail2.2 Trigger2.3 JobStore3.上篇小结1.一个想法最近项目中用到了Quartz框架,作为定时任务的调度框架,无论是和Spring的完美融合还是直接使用Java代码来进行使用,可以说都非常的简单且稳定,某天突然想到如果没有Quartz框架,我们应该如何实现一个纯Java代码的定时任务调度框架呢?...原创 2019-04-13 23:06:13 · 1237 阅读 · 0 评论 -
Quartz源码分析(下)
上一篇文章中,我们分析了Quartz框架的Job和Trigger的源码实现,上篇也说到,Quartz的核心代码是Scheduler,在本篇中,我们会分析一下Scheduler的源码实现。文章目录1、核心入口类:QuartzScheduler2、调度线程类:QuartzSchedulerThread3、任务执行线程池:SimpleThreadPool4、任务执行线程类:WorkerThread5...原创 2019-04-20 20:34:30 · 1039 阅读 · 1 评论 -
Java线程池源码分析
文章目录一.Java线程池原理分析二.Java线程池源码分析1.接口继承关系2.核心类ThreadPoolExecutor2.1 入口方法 execute -- 调度器2.2 添加线程方法 addWorker2.3 Worker 内部类2.4 核心方法 runWorker -- 发动机2.5 任务获取方法 getTask3.流程回顾一.Java线程池原理分析上一篇是 线程池原理分析,只是说明了...原创 2019-03-31 22:17:35 · 378 阅读 · 0 评论 -
Java线程池原理分析
文章目录1. 线程池设计理念1.1 减少创建/切换线程开销1.2 线程池模型1.2.1 BlockingQueue1.2.2 corePool1.2.3 maxmumPool1.2.4 RejectedExecutionHandler1.2.3 execute2.线程池使用实例3. 线程池工作流程其实这篇文章在去年就已经写完了,但是因为懒一直没有整理成博客,今天痛定思痛下定决心,也要把它发表出来...原创 2019-03-31 20:52:34 · 612 阅读 · 0 评论 -
网易校招多线程笔试题
题目要求:一个文件中有10000个数,用Java实现一个多线程程序将这个10000个数输出到5个不用文件中(不要求输出到每个文件中的数量相同)。要求启动10个线程,两两一组,分为5组。每组两个线程分别将文件中的奇数和偶数输出到该组对应的一个文件中,需要偶数线程每打印10个偶数以后,就将奇数线程打印10个奇数,如此交替进行。同时需要记录输出进度,每完成1000个数就在控制台中打印当前完成数量,并在所...原创 2018-08-01 12:06:33 · 757 阅读 · 0 评论 -
Java并发--Java中的CAS操作和实现原理
这几天准备梳理一下Java多线程和并发的相关知识,主要是系统的梳理一下J.U.C包里的一些东西,特别是以前看过很多遍的AQS和实现类,还有各种并发安全的集合类。最重要的就是这个CAS操作,可以说是整个J.U.C包的灵魂之处。1.什么是CAS?2.JAVA中的CAS操作实现原理3.concurrent包中CAS的应用4.小结1.什么是CAS? CAS:Compare...原创 2018-06-01 10:04:22 · 8691 阅读 · 1 评论 -
Java多线程--正确理解interrupt()、interrupted()和isInterrupted()
1.interrupt()2.isInterrupted()3.interrupted()1.interrupt()理解这个函数,可以首先从它自己的JavaDoc入手。 Interrupts this thread. Unless the current thread is interrupting itself, which is always pe...原创 2018-05-31 16:57:56 · 5202 阅读 · 0 评论 -
Java并发--ReentrantLock实现分析
ReentrantLock是基于AQS实现的可重入独占锁,如果还不了解AQS实现原理的同学可以先去AQS原理分析学习一哈。如果文章中由任何不妥或者谬误之处,请批评指正。公平锁or非公平锁1. 非公平锁1.1 非公平锁的获取2. 公平锁2.1 公平锁的获取3. 解锁过程公平锁or非公平锁ReentrantLock核心功能的实现,依赖于继承AQS类实现的...原创 2018-06-05 18:43:07 · 323 阅读 · 0 评论 -
Java并发--AQS源码分析
一、AQS整体设计思路1.1 CAS操作+volatile关键字+改造的CLH队列二、独占模式2.1何为独占模式2.2 独占模式下获取共享资源2.2.1 直接获取了共享资源的操作权2.2.2 没有获取了共享资源的操作权2.3 独占模式下释放共享资源2.3.1 释放资源三、共享模式3.1共享模式获得资源如果说CAS操作,是J.U.C包的灵魂,那么...原创 2018-06-03 22:11:16 · 1689 阅读 · 0 评论 -
JavaNIO--4.多线程Reactor模式
单线程VS多线程1.模型代码1.1Reactor模型1.Handler模型2.自己实现的多线程echo服务器(基于Reactor模式)2.1 Reactor2.2 Handler单线程VS多线程写在前面: 也就是说多线程实现echo服务器实际上是不太科学的选择,但是本文依旧是实现了一个echo服务器。为了不误人子弟,所以请谨慎观看第二部分——自...原创 2018-05-08 19:15:22 · 1478 阅读 · 0 评论 -
JavaNIO--5.多Reactor模式
一. 多Reactor模型1.1最优的解决方案1.2模型代码1.2.1主反应器1.2.2次反应器1.3模型代码分析二. 总结一. 多Reactor模型1.1最优的解决方案当我们经历了最初的Reactor模型,实现了单线程基于Selector选择器的NIO通信模式,到升级为多线程Reactor模型,由一个Selector实现事件的分发到不同的线程进行服...原创 2018-05-20 21:01:20 · 1034 阅读 · 1 评论 -
伪共享--多线程性能的破坏者
文章目录前言1.从CPU说起1.1 CPU缓存1.2 缓存行1.3 MESI协议2. 伪共享3. 解决方案4. 后记前言前几天看到了伪共享这个概念,但是并没有去做深入的了解,今天又看到了这个概念,才想起来要好好研究一下伪共享究竟是个什么东西,反而在学习的过程中又引发了我对JMM(Java内存模型)的思考,前几天有个同事分享了JMM相关内容,当时我感觉自己已经比较了解了,但是今天来看似乎并没有能...原创 2019-07-31 21:06:30 · 524 阅读 · 0 评论