
Java多线程编程实战指南-核心篇
Frasensy
背负青天而莫之夭阏者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
走近java线程
1、进程、线程、任务 进程 1、是程序的运行实例,例如一个运行的Eclipse就是一个进程。 2、是程序向操作系统申请资源(如内存空间、文件句柄)的基本单位 线程 1、是进程中可独立执行的最小单位 2、一个进程可包含多个线程,所有线程共享该进程的资源 任务 1、线程要完成的计算就被称为任务 2、Java线程API start方法调用结束不意味着相应线程的运行开始,只是启动...原创 2019-01-12 09:45:54 · 167 阅读 · 0 评论 -
多线程编程的目标与挑战
1、并行和并发 并发:一段时间内交替完成多个任务 并行:以齐头并进方式完成多个任务 并发的极致就是并行 2、多线程的实质是将任务的处理方式由串行改为并发 3、竞态 定义:计算的正确性依赖于相对时间顺序或者线程交错 不一定会导致计算结果不正确,只是不排除计算结果时而正确时而错误的可能 竞态往往伴随读取脏数据问题 局部变量不会导致竞态 4、线程安全性 线程安全:一个类在单线程环境下运作正...原创 2019-01-12 09:48:32 · 247 阅读 · 0 评论 -
Java线程同步机制
1、Java提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字以及一些相关的API 2、锁 锁有排他性,一次只能被一个线程持有 锁可以保证原子性、可见性、有序性 两个条件: 1、这些线程在访问同一组数据必须使用同一个锁 2、任意线程读写都需要持有相应的锁 可重入性ReentrantLock /** A调用B,B也用lock,但是A正持有lock,但是...原创 2019-01-12 09:51:18 · 760 阅读 · 0 评论 -
线程
1、挖掘可并发点 2、分而治之 1、基于数据的分割实现并发化 2、基于任务的分割实现并发化 3、合理设置线程数 1、多线程程序的提速只要来自多个线程对程序中可并行化部分的耗时均摊 2、最终决定多线程程序提速的因素是整个计算中串行部分的耗时比率而不是线程数 3、CPU密集型线程,线程数通常设置为N(cpu)+1;I/O密集型线程优先考虑线程数设为1,不够用的情况下将线程数向2*N(cpu)靠近 4、...原创 2019-01-12 09:56:32 · 162 阅读 · 0 评论 -
保障线程安全的设计技术
1、Java运行时存储空间 1、堆空间(Heap) 可以被多个线程共享 存储对象,Java虚拟机启动时分配的一段可以动态扩容的内存空间 存储类的实例 垃圾回收器的工作场所 进一步划分:年轻代、年老代 2、栈空间(Stack) 线程的私有空间 线程创建时分配的固定大小的内存空间 局部变量的变量值存储在栈空间,基础类型变量和引用类型变量的变量值直接存储在栈帧空间 3、非堆空间(Non-Heap...原创 2019-01-12 09:57:47 · 195 阅读 · 0 评论 -
线程的活性故障
1、线程活性故障 由资源稀缺性或者程序自身的问题和缺陷导致线程一直处于非Runnable状态,或者线程虽然处于Runnable状态但是其要执行的任务却一直无法进展的故障现象 2、死锁 1、产生条件(必要非充分) 资源互斥 资源不可抢夺 占用并等待资源 循环等待资源 2、破坏任一条件即可避免死锁 一般从“占用并等待资源”和“循环等待资源”两方面破坏条件 粗锁法:使用粗粒度的锁待敌代替多个锁(...原创 2019-01-12 10:00:46 · 469 阅读 · 0 评论