《JAVA并发编程实践》学习笔记(第八.九章)

JAVA面向对象程序设计第八章-第九章课后习题答案--------面向对象中的多态+使用异常处理 第八章 1、要使程序运行出下面结果,修改程序 package com.xiujie.part_8; public class T01 { public static void main(String[] args) { Person person=new Person("小明",'男'); person.show(); Student student=new Student("小明",'男',101); student.show(); Pupil pupil=new Pupil("小 阅读详情

第8章 应用线程池

8.1 任务与执行策略间的隐形耦合

       一些任务具有这样的特征:需要或者排斥某种特定的执行策略。对其他任务具有依赖性的任务,就会要求线程池足够大,来保证它所依赖任务不必排队或者不被拒绝;采用线程池的任务需要顺序地执行。把这些需求都写入文档,这样将来的维护者就不会使用一个与原先相悖的执行策略,而破坏安全性或活跃度了。

8.1.1线程饥饿死锁

       在线程池中如果一个任务依赖于其他任务的执行,就可能产生死锁。

       线程饥饿死锁(thread starvation deadlock),满足以下叙述就会发生:只要吃池任务开始了无限期的阻塞,其目的是等待一些资源或条件,此时只有另个一池任务的活动才能使那些条件成立,比如等待返回值或者另一个任务的边界效应。除非保证这个池足够大,否则会繁盛线程饥饿死锁。

8.2 定制线程池的大小

       如果线程池过大:线程对稀缺的CPU和内存资源的竞争,会导致内存的高使用量,还可能耗尽资源。如果过小,由于存在很多可用的处理器资源却未在工作,会对吞吐量造成损失。

8.3 配置ThreadPoolExecturtor

8.3.1 线程的创建与销毁

       核心池大小(corepool size)、最大池的大小(maximum pool size)和存活时间(keep-alivetime) 共同管理者线程的创建于销毁。核心线程池大小是目标的大小。

8.3.2管理队列任务

8.3.4 线程工厂

       无论怎样,线程池需要创建一个线程,都要通过一个线程工厂(trhead factory).

       每个迭代彼此独立,并且完成循环体重每个迭代的工作,意义都足够重大,足以弥补管理一个新任务的开销时,这个顺序循环是合适并行化的。

 

第9章 GUI应用程序

       几乎所有的GUI工具集都实现为单线程化子系统(single-threaded),意味着所有GUI的活动都被限制在一个单独的线程中,这其中就包括Swing和SWT.

9.1 为什么GUI是单线程化的

9.1.1顺序事件处理

       顺序任务处理不利的一面是,如果一个任务的执行要花费很长时间,其他任务也必须要等到它结束。

9.1.2 Swing中的线程限制

       Swing的单线程规则:Swing的组件和模型只能在事件分派线程中被创建,修改和请求。

9.2 短期的GUI任务

9.3.2 进度和完成标识

       使用Future表现一个耗时任务,可以极大地简化取消的实现。

9.4.1 线程安全的数据模型

       只要阻塞不过度影响想影响,多线程操作数据的问题就可以通过线程安全的数据模型来解决。

9.4.2 分拆数据模型

       如果一个数据模型必须被多个线程共享,而且实现了一个线程安全模型的尝试却由于阻塞、一致性或者复杂度等原因而失败,这时可以考虑运用分拆模型设计。

9.5 其他形式的单线程子系统

     线程限制不仅仅限制在GUI系统:无论何时,它都可以用作实现单线程化子系统的便利工具。

总结

       GUI框架几乎都是作为单线程化子系统实现的,所有与表现相关的代码都作为任务在一个事件过程中运行。因为只有唯一一个过程,耗时任务会损害响应性,所以它们应该在后台线程中运行。

微信4.1.5.16升级后,你的自动化脚本失灵了?手把手教你用C#让UI树“复活” 微信4.1.5.16版本更新导致自动化脚本失效?本文深入解析微信UI树隐藏的原因,并提供C#实战解决方案,通过UIAutomation技术恢复UI树结构,帮助开发者重新实现自动化操作。涵盖技术原理、代码实现及优化策略,适合RPA开发者和自动化脚本编写者参考。 阅读详情

相关推荐

银河麒麟V10ARM架构服务器离线安装docker\nacos【附安装包】

本文分享了在银河麒麟ARM64操作系统上安装Docker和Nacos的完整过程。首先提供了Docker的自动化安装脚本,包含服务配置、存储路径设置等关键步骤,并给出了常用维护命令。接着详细介绍了通过Docker-compose部署Nacos的方法,包括镜像导入、配置文件修改、鉴权设置等注意事项,特别强调了密钥长度必须超过32个字符的要求。文章还提供了Nacos初次登录的注意事项,并预告了后续可能推出的Redis、Nginx等安装教程。所有配置文件和脚本均可直接下载使用,适合内网环境下国产操作系统的部署

weixin_39054697的博客 2344

线程的优点和风险

1、线程的优点 恰当地使用线程时,可以降低开发和维护的开销,并且能够提高复杂应用的性能。线程通过把异步的工作流程转化为普遍存在的顺序流程,使程序模拟人类工作和交互变得更容易了。另一方面,它们可以把复杂、难以理解的代码转化为直接、简洁的代码,这样更容易读写及维护。 线程在GUI应用程序中是非常有用的,可以来改进用户接口的响应性,并且在服务器应用中,用于提高资源的利用率和吞吐量。它...

薛路的笔记 359

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5228

C的温故而知新(C Primer Plus第八、九章)

了解并学习单字符I/O:getchar()和putchar()函数,缓冲区的内容了解一下,知晓什么是缓冲输入,什么是无缓冲输入;缓冲还分为完全缓冲和行缓冲,每一种都有存在的意义,很好理解,这里就不多说了。文件是存储器中存储信息的区域。从概念上看,C程序处理的是流而不是直接处理文件,所谓流,是一个实际输入或输出映射的理想化数据流。无论操作系统实际使用何种方法检测文件结尾,在C语言中,用getchar()读取文件检测到文件结尾时将返回一个特殊的值,即EOF(end of file的缩写)。

qq_49674227的博客 1006

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期降低成本

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

Easyways1的博客 1378

电力-平衡式IEC 60870-5-101规约报文解析

本文详细介绍了电力自动化中平衡式IEC 60870-5-101规约的应用,包括链路建立与初始化、对时、遥控操作、数据上送和总召唤等关键步骤,通过实例解析了报文格式和交互过程,是理解配网自动化通信的重要参考资料。

让你爱上电路设计 5684

Java 并发编程学习笔记

3.锁在同一实例对象上才互斥,monitorenter申请锁,nonitorexit释放锁。作用:放入的线程全部等待消费线程来取(可同时多个线程),事件的及时传递。解决问题:解决某线程写入数据后,接着读取该数据,可能不一致的问题。锁降级:是指在获取写锁后,再获取读锁,然后释放写锁,释放读锁。底层实现:写的时候拷贝数据到新数组,然后设置到新的数组引用。读锁:持有读锁时,其他线程可继续获取读锁,不可获取写锁。写锁:持有写锁时,其他线程不可获取读锁,也不可获取写锁。使用案例:ABC打印问题,可精准通知线程。

freeRoad 1324

拆解大疆M300电池BMS:基于TI TIDA-010030方案的硬件架构深度分析

本文深度解析了大疆M300无人机电池管理系统(BMS)基于TI TIDA-010030参考设计的硬件架构。通过对比TI方案与大疆实现的差异,详细介绍了BQ7694003监控前端和BQ34Z100电量计的优化设计,以及通信架构的可靠性改进。文章还揭示了大疆在成本、空间和标准化方面的工程妥协与创新平衡,为锂电池保护方案提供了实践参考。

weixin_27066963的博客 237

Java 技术手册第八版(一)

这本书是一本桌面 Java 参考书,设计为您编程时放在键盘旁边的忠实伴侣。第一部分,“介绍 Java” 是一本快节奏的“无废话”介绍,涵盖了 Java 编程语言和 Java 平台核心运行时方面的内容。第二部分,“使用 Java 平台” 是一个参考部分,混合了核心概念的阐述和重要核心 API 的示例。本书覆盖了 Java 17,但我们知道有些团队可能还未采用该版本,因此在可能的情况下,我们标注了某些功能在 Java 8 之后引入。第一部分是介绍 Java 语言和 Java 平台。

龙哥盟 1596

基于rms包的限制性立方样条回归(RCS)R代码实现

RCS

2301_79584199的博客 2万+

避坑指南:ANSYS流固耦合计算中System Coupling数据传递设置与常见报错解决

本文深入解析ANSYS Workbench中System Coupling模块在双向流固耦合(FSI)计算中的应用,详细讲解数据传递机制、典型报错解决方案及高阶调试技巧。通过实际案例展示如何优化耦合步长、处理大变形问题,并提升并行计算效率,帮助工程师有效规避常见技术陷阱。

weixin_29213525的博客 727

java JUC并发编程 第八章 ThreadLocal

ThreadLocal,ThreadLocaMap,java强引用,java软引用,java弱引用,java虚引用

记录工作历程 313

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8737

《Java并发编程的艺术》笔记

打完

y_mk的博客 416

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java第八章、第九章作业

第八章

cheng_we的博客 352

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

每一步操作直击程序员内心,Alibaba出品的Java并发编程实践文档,

前言: Java近些年深受程序员们的喜爱,而线程是Java平台的基石。随着多核处理器成为标准,欲构建高性能的应用程序,有效地利用并发将成为关键的步骤。无论如何,开发、测试、调试多线程的程序仍然非常困难;常见的情形总是开发的并发程序看上去可以正常工作,但是在极端情况下就会失败,就生产环境而言这种情况是指高负载。 而今天分享的GitHub上标星81.6k的Java并发编程实践,以坚实的理论基础和翔实的实践技术,可帮助朋友们构建可靠的、可伸缩的和可维护的并发应用程序。并不是简单地罗列出并发API和机制,相反.

weixin_46794373的博客 130

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java JUC并发编程 第九章 对象内存布局与对象头

对象内部结构分为:对象头、实例数据、对齐填充(保证8个字节的倍数)对象头分为对象标记(markOop)和类元信息(klassOop),类元信息存储的是指向改对象类元数据(klass)的首地址。

记录工作历程 333

《Java并发编程的艺术》--目录

第一章 介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何解决。第二章 介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。第三章 深入介绍了Java内存模型。Java线程在会见的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本章试图揭开Java内存模型的神秘面纱。第四章 从介绍多线程技术带来的好处开始...

csdn_kenneth的博客 1993

每一步操作直击程序员内心 Alibaba出品的Java并发编程实践

1. 管理状态依赖性2.使用条件队列3. 显式的Condition对象4.剖析Synchronizer6. java.util.concurrent的Synchronizer类中的AQS。

老男孩的架构路 164

《Java并发编程的艺术》- 读书笔记

目录第1章 并发编程的挑战1.1 上下文切换1.2 死锁第2章 并发机制的底层实现原理2.1 volatile关键字2.2 synchronized2.3 原子操作的实现原理第3章 Java内存模型3.1 java内存模型基础3.2 重排序3.3顺序一致性3.4volatile的内存语义3.5锁的内存语义3.6 final域的内存语义3.7 happens-before3.7 双重锁检查第4章 j...

Admire_an的专栏 704

阿里巴巴技术官拿出了内部Java并发编程实践文档,全部吃透立涨10K

前言: Java近些年深受程序员们的喜爱,而线程是Java平台的基石。随着多核处理器成为标准,欲构建高性能的应用程序,有效地利用并发将成为关键的步骤。无论如何,开发、测试、调试多线程的程序仍然非常困难;常见的情形总是开发的并发程序看上去可以正常工作,但是在极端情况下就会失败,就生产环境而言这种情况是指高负载。 而今天分享的GitHub上标星81.6k的Java并发编程实践,以坚实的理论基础和翔实的实践技术,可帮助朋友们构建可靠的、可伸缩的和可维护的并发应用程序。并不是简单地罗列出并发API和机制,相反.

m0_50180963的博客 143

java高并发编程方腾飞_Java并发编程的艺术-方腾飞笔记

The Art of Java Concurrency Programming第一章 并发编程的挑战1.11.1.11.1.2vmstat 命令显示CS(Content Switch),表示上下文切换次数第二章 Java并发机制的底层实现原理volatile应用2.1 volatile的两条实现原则Lock前缀指令会引起处理器缓存回写到内存一个处理器的缓存回写到内存会导致其他处理器的缓存实效,ME...

weixin_42620913的博客 422

GitHub上标星81.6k的“并发编程实践“,看完是真爱了

前言: Java近些年深受程序员们的喜爱,而线程是Java平台的基石。随着多核处理器成为标准,欲构建高性能的应用程序,有效地利用并发将成为关键的步骤。无论如何,开发、测试、调试多线程的程序仍然非常困难;常见的情形总是开发的并发程序看上去可以正常工作,但是在极端情况下就会失败,就生产环境而言这种情况是指高负载。 而今天分享的GitHub上标星81.6k的Java并发编程实践, 以坚实的理论基础和翔实的实践技术,可帮助朋友们构建可靠的、可伸缩的和可维护的并发应用程序。并不是简单地罗列出并发API和机制,相反,它

爱写代码的程序员 455

Java编程思想笔记目录

祝各位 程序???? 节日快乐???? ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020102311591445.gif#pic_center) 写在前面:   前阵子,小名“偷偷地”发了一批文章,是小名的一些读书笔记✍,那么为什么要把笔记发出来呢,嘻嘻,当然是小名的????不太灵光啦????但是吧,小名坐地铁或者走在大街上的时候,脑袋里总是会想一些有的没的,不排除会想一些Java基础的知识,时常联系不起来,就有可能别扭一整天。所以呢,把它发出来一方面是为了和大

小名同学 23万+

java并发编程总汇

章节总汇 第一章:并发编程的优缺点 第二章:线程的状态转换以及基本操作 第三章:Java内存模型以及happens-before规则 第四章:彻底理解synchronized 第五章:彻底理解volatile 第六章:你以为你真的了解final吗? 第七章:三大性质总结:原子性、可见性以及有序性 第八章:初识Lock与AbstractQueuedSynchronizer(AQS) ...

凯耐的博客 591

[学习笔记]java并发编程目录

章节 标题 内容 第一章 简介 线程会引发的问题 第二章 线程安全性 如果通过同步来避免多个线程在同一时刻访问相同的数据 第三章 对象的共享 如果共享和发布对象,从而使它们能够安全地由多个线程同时访问 第四章 对象的组合 介绍了构造线程安全类时采用的一些技术,例如将线程安全性委托给现有的线程安全类。 第五章 基础

onpwerb的博客 767
上一篇: 《JAVA并发编程实践》学习笔记(第六.七章)
下一篇: 《JAVA并发编程实践》学习笔记(第十.十一章)
把酒作清欢
博客等级 码龄15年 17粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值