MULITITHREAD
hy_coming
不忘初心 方得始终
展开
-
【多线程】——初识(1)
一、简介 在早期的计算机中不包含操作系统,从头到尾只执行一个程序,并且这个程序能访问计算机中的所有资源,这样对于电脑资源来说也是一种浪费,后来就出现了操作系统,可以同时运行多个程序,不同的程序在单独的进程中运行,之间可以通过一些粗粒度的通信机制来交换数据,包括:套接字、信号处理器、共享内存、信号量以及文件等。 二、进程和线程 上面也说到了资源利用率的问题,正常人的思维是串行化的,也就是一件事...原创 2019-05-02 13:22:03 · 168 阅读 · 0 评论 -
【多线程】——线程安全性(2)
一、前言 通过前面的章节,我们知道知道什么是进程,什么是线程,其次因为线程的引入,安全性也是我们关注的一个重点,那么如何判断一个对象是线程安全的呢?取决于它是否被多个线程访问,这指的是在程序中访问对象的方式,而不是对象要实现的功能。所以为了保证对象的安全性,我们需要同步机制的保证,在java中我们主要的同步机制关键字是synchronized,同时还包括volatile类型的变量、显示锁以及原子...原创 2019-05-02 15:15:24 · 125 阅读 · 0 评论 -
【多线程】——对象的组合 (3)
一、生产者消费者模式 这个模式是我们在生产中常见的模式,大部分都是阻塞队列来构建的,因为这样是为了防止资源的崩溃,以两个人洗盘子为例,二者的劳动分工就是一种生产消费者模式:其中一个人把洗好的盘子放在盘架上,而另一个人从盘架上取出盘子并把他们烘干,在这个示例当中盘架相当于阻塞队列。如果盘架上没有盘子,那么消费者会一直等待,直到有盘子需要烘干,如果盘架放满了,那么生产者会停止清洗直到盘架上有更多的空...原创 2019-05-03 15:29:23 · 178 阅读 · 0 评论 -
【多线程】——Executor框架和线程池(4)
一、前言 线程是程序执行流的最小单元,很基础,也很重要。 为了提高流畅性,耗时任务放后台线程运行,这是APP开发的常识了。 随着APP复杂度的提升,越来越多任务需要开线程执行,同时,遇到如下挑战: 任务场景多样化,常规的API无法满足; 随着组件化,模块化等演进,可能使得线程管理不统一(比如多个线程池)。 为此,我们今天来探讨一下的如何设计线程调度。 话不多说,从线程池开始吧。 二、线程池...转载 2019-03-01 10:34:35 · 377 阅读 · 0 评论 -
【多线程】——ThreadLocal理解(5)
源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类 ThreadLocalMap(内部类) Thread 首先,在Thread类中有一行: /* ThreadLocal values pertaining to this thread. This map is maintained by the ThreadLocal clas...转载 2019-03-03 16:55:46 · 162 阅读 · 0 评论 -
【多线程】——普通线程和守护线程(6)
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出) 所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。 守护线程在没有用户线程可服务时自动离开,在Java中比较特殊的线程...转载 2019-05-04 13:54:15 · 143 阅读 · 0 评论