
多线程
DoubleFJ
只有回不去的过去,没有到不了的未来。
展开
-
走近 Java 世界中的线程
本文摘抄自《Java 多线程编程实战指南》核心篇 第一章小结 个人博客:DoubleFJ の Blog本章介绍了线程、多线程编程这两个基本概念以及 Java 平台对线程的实现。进程是程序的运行实例,一个进程可以包含多个线程,这些线程共享其所在进程的资源。线程是进程中可独立执行的最小单位。 Java 标准库类 java.lang.Thread 就是 Java 平台对线程的实现。...原创 2019-06-17 09:26:31 · 185 阅读 · 0 评论 -
多线程编程的目标与挑战
本文摘抄自《Java 多线程编程实战指南》核心篇 第二章小结个人博客:DoubleFJ の Blog本章通过一些具体概念介绍了多线程编程的目标及其面临的挑战。单线程程序所进行的计算本质上是串行。多线程编程的目标是将原本串行的计算改为并发乃至并行。竞态(Race Condition)是指计算的正确性依赖于相对时间顺序(Relative Timing)或者线程的交错(Interle...原创 2019-07-09 09:33:19 · 238 阅读 · 0 评论 -
Java 线程同步机制
本文摘抄自《Java 多线程编程实战指南》核心篇 第三章小结个人博客:DoubleFJ の Blog本章介绍了 Java 平台提供的各种线程同步机制。 Java 线程同步机制的幕后助手是内存屏障。不同同步机制的功能强弱不同,相应的开销以及可能导致的问题也不同,如下表所示。因此,我们需要根据实际情况选择一个功能适用且开销较小的同步机制。Java 线程同步机制的功能与开销/问题...原创 2019-07-15 09:33:34 · 497 阅读 · 0 评论 -
线程间协作
本文摘抄自《Java 多线程编程实战指南》核心篇 第五章小结个人博客:DoubleFJ の Blog本章介绍了多线程编程中线程间常见的协作形式以及 Java 平台对这些协作形式所提出的支持。 等待线程可以通过执行 Object.wait()/wait(long) 来实现等待。通知线程可以通过执行 Object.notify()/notifyAll() 来实现通知。等待线程/通知线程在...原创 2019-07-29 14:24:59 · 149 阅读 · 0 评论 -
在实践中运用多线程
本文摘抄自《Java 多线程编程实战指南》核心篇 第四章小结个人博客:DoubleFJ の Blog本章介绍了利用多线程实现并发计算的基本方法以及多线程编程实践中的注意事项及应对措施。 挖掘出程序中的可并发点是实现多线程编程的目标——并发计算的前提。 实现并发化的策略包括基于数据的分割策略和基于任务的分割策略。前者从程序处理的数据角度入手,将原始输入分解为若干规模更小的子输入,并...原创 2019-07-22 09:53:50 · 240 阅读 · 0 评论 -
保障线程安全的设计技术
本文摘抄自《Java 多线程编程实战指南》核心篇 第六章小结个人博客:DoubleFJ の Blog本章从面向对象编程的角度出发讲解了实现线程安全的几种常用技术。这些技术的运用通常可以产生具有固有线程安全性的对象,即这些对象本身无须借助锁就可以保障线程安全,从而有利于提高系统的并发性。本章还介绍了同步集合和并发集合。 Java 运行时空间可分为堆空间/非堆空间以及栈空间。 栈空间是线...原创 2019-08-19 10:10:13 · 196 阅读 · 0 评论 -
线程的活性故障
本文摘抄自《Java 多线程编程实战指南》核心篇 第七章小结个人博客:DoubleFJ の Blog本章介绍了常见的线程活性故障以及相应的规避措施。 死锁会导致相关线程一直被暂停使得其任务无法进展。产生死锁的必要条件包括:资源互斥/资源不可抢夺/占用并等待资源以及循环等待资源。 我们可以通过查看线程转储手工检测死锁,也可以利用 ThreadMXBean.findDeadlockedT...原创 2019-08-26 16:18:21 · 310 阅读 · 0 评论