随笔分类 - Java多线程开发
摘要:什么是生产者消费者模式?简单来说就是有两个角色,一个角色主要负责生产数据,一个角色主要负责消费(使用)数据。那么生产者直接依赖消费者,然后直接调用是否可以?答案是可以的,但是有些场景无法及时解决,典型的就是生产者消费者的速度无法同步,导致整体的速度上不去的情况。执行速度永远取决于二者的最小速度(假设
阅读全文
摘要:Fork译为拆分,Join译为合并Fork/Join框架的思路是把一个非常巨大的任务,拆分成若然的小任务,再由小任务继续拆解。直至达到一个相对合理的任务粒度。然后执行获得结果,然后将这些小任务的结果汇总,生成大任务的结果,直至汇总成最初巨大任务的结果。如下图: 红色箭头代表拆分子任务。绿色箭头代表返
阅读全文
摘要:在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用。这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可维护性却非常的差。开发人员在实际使用过程中,应该更多的将精力放置在业务代码的书写过程中,而不是系统代码的维护中。你需要懂,但是不需要你直接
阅读全文
摘要:布隆过滤器是1970年由布隆提出的。他其实是一个很长的二进制向量外加一系列的随机函数函数来组成。 在正式说到布隆过滤器时,我们要先聊这样一个话题:在解决工程类问题时,很多问题的回答并不是只有这两种布尔状态:是 or 否而可能是这两种状态:一定没有 or 可能有亦或者可能是这两种状态:一定有 or 可
阅读全文
摘要:先来看看这个关键字是什么意思:volatile [ˈvɒlətaɪl] adj. 易变的,不稳定的; 从翻译上来看,volatile表示这个关键字是极易发生改变的。volatile是java语言中,最轻量级的并发同步机制。这个关键字有如下两个作用:1、任何对volatile变量的修改,java中的其
阅读全文
摘要:事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点。今天我们在多线程开发中,穿插进来这个线程。分别从线程的来由、原理和使用方法三个方面来学习事件派发线程。一、事件派发线程的前世今生事件(Event)派发(Dispatch)线程(Thread)简写为EDT,也...
阅读全文
摘要:在上节的线程控制(详情点击这里)中,我们讲解了线程的等待join()、守护线程。本节我们将会把剩下的线程控制内容一并讲完,主要内容有线程的睡眠、让步、优先级、挂起和恢复、停止等。 废话不多说,我们直接进入正题:3、线程睡眠 sleep() 所有介绍多线程开发的学习案例中,基本都有用到这个方...
阅读全文
摘要:在前文中我们已经学习了:线程的基本情况、如何创建多线程、线程的生命周期。利用已有知识我们已经可以写出如何利用多线程处理大量任务这样简单的程序。但是当应用场景复杂时,我们还需要从管理控制入手,更好的操纵多线程。在第一节中我们讲过,使用多线程的好处之一就是我们可以通过编码和已有类库更好的管理和控制多线...
阅读全文
摘要:前文中已经提到了,关于多线程的基础知识和多线程的创建。但是如果想要很好的管理多线程,一定要对线程的生命周期有一个整体概念。本节即对线程的一生进行介绍,让大家对线程的各个时段的状态有一定了解。线程的一生的状态过程如下图: 线程会由出生 到运行 再到 死亡。在前文中曾经讲到过(寻找前文请点这里):ja...
阅读全文
摘要:前文已介绍过多线程的基本知识了,比如什么是多线程,什么又是进程,为什么要使用多线程等等。在了解了软件开发中使用多线程的基本常识后,我们今天来聊聊如何简单的使用多线程。在Java中创建多线程的方式有两种:(1)写一个子类,这个类要继承自Thread类,于此同时这个子类必须要重写Thread类中的run...
阅读全文
摘要:对编程语言的基础知识:分支、选择、循环、面向对象等基本概念理解后,我们需要对java高级编程有一定的学习,这里不可避免的要接触到多线程开发。由于多线程开发整体的系统比较大,我会写一个系列的文章总结介绍 多线程开发的概念、使用、线程状态、同步、线程池。希望与大家共勉。在第一部分,也就是本节我们先介绍下...
阅读全文