`

活跃性与性能

 
阅读更多
通过缩小同步代码块的作用范围,我们很容易做到既确保程序的并发性,同时又能维护线程的安全性。尽量将不影响共享状态且执行时间较长的操作从同步代码块中分离出去。
@ThreadSafe
public class CachedFactorizer extends GenericServlet implements Servlet {
    @GuardedBy("this") private BigInteger lastNumber;
    @GuardedBy("this") private BigInteger[] lastFactors;
    @GuardedBy("this") private long hits;
    @GuardedBy("this") private long cacheHits;

    public synchronized long getHits() {
        return hits;
    }

    public synchronized double getCacheHitRatio() {
        return (double) cacheHits / (double) hits;
    }

    public void service(ServletRequest req, ServletResponse resp) {
        BigInteger i = extractFromRequest(req);
        BigInteger[] factors = null;
        synchronized (this) {
            ++hits;
            if (i.equals(lastNumber)) {
                ++cacheHits;
                factors = lastFactors.clone();
            }
        }
        if (factors == null) {
            factors = factor(i);
            synchronized (this) {
                lastNumber = i;
                lastFactors = factors.clone();
            }
        }
        encodeIntoResponse(resp, factors);
    }

    void encodeIntoResponse(ServletResponse resp, BigInteger[] factors) {
    }

    BigInteger extractFromRequest(ServletRequest req) {
        return new BigInteger("7");
    }

    BigInteger[] factor(BigInteger i) {
        // Doesn't really factor
        return new BigInteger[]{i};
    }
}
分享到:
评论

相关推荐

    Java并发编程实战

    第三部分 活跃性、性能与测试 第10章 避免活跃性危险 第11章 性能与可伸缩性 第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章...

    Java 并发编程实战

    第三部分 活跃性、性能与测试 第10章 避免活跃性危险 第11章 性能与可伸缩性 第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章...

    《java并发编程实战》读书笔记-第2章-线程安全性

    《java并发编程实战》读书笔记-第2章-线程安全性,脑图形式,使用xmind8制作 包括引言、线程安全性定义、原子性、加锁机制、使用锁保护状态、活跃性与性能等内容

    Java线程之活跃性危险.docx

    Java线程中的活跃性危险主要涉及线程的执行与资源竞争,这可能引发死锁、饥饿、长时间不响应以及活锁等现象。这些情况都可能导致系统性能下降甚至完全停止。 **1. 死锁** 死锁是由于线程间的资源竞争和锁的顺序不当...

    高级java笔试题-Java-Concurrency-in-Practice:《Java并发编程实战》阅读整理笔记,附加了一些《Java并发编

    活跃性与性能 串一串 Java 并发编程的知识点 愚以为,Java 并发编程的难点在于,反常识!因为并发、并行本身,是有悖于我们大脑的工作模式的,也就是说,我们长期的写码不得不 而一旦将这一个一个的线程组合起来,...

    嵌入式Linux内存使用与性能优化

    本文将深入探讨嵌入式Linux内存使用与性能优化的相关知识点,帮助开发者更好地理解和改进其程序性能。 首先,理解Linux内存模型是优化的基础。Linux内核采用虚拟内存管理,包括物理内存(RAM)和交换空间(Swap)。...

    一种大规模MIMO系统的联合用户活跃性和信号检测方法.docx

    为了解决这些问题,研究者们提出了无握手的免调度方案,即在基站同时进行用户活跃性检测和信号检测。这一策略利用了活跃 IoT 设备数量远小于基站天线数量的特性,结合压缩感知理论进行联合检测。压缩感知算法通过在...

    ORACLE 健康检查与性能分析报告

    ### ORACLE 健康检查与性能分析报告 #### 1. 报告综述 ##### 1.1 目的说明 本报告的主要目的是针对指定时间段...通过上述分析与建议,我们可以有效地提高Oracle数据库的性能和稳定性,从而更好地支持企业的业务需求。

    性能测试分享-基础篇 ppt

    性能测试是软件测试中的一种测试方法,旨在评估软件系统的性能、可靠性和可扩展性。性能测试的目标是确保软件系统在不同负载和压力下的稳定性和高效性。 性能测试概念: 性能测试是通过模拟实际使用场景,来评估...

    性能测试和工具(pdf)

    - 负载测试:在逐渐增加的负载下测试系统,确定其性能与负载之间的关系。 - 并发测试:检查系统在多用户同时访问时的性能和稳定性。 - 稳定性测试(耐久性测试):长时间运行测试,观察系统在持续压力下的表现和...

    WCF自定义绑定与Webservice传输性能比较

    当我们谈论“WCF自定义绑定与Web Service传输性能比较”时,实际上是在探讨这两种技术在数据传输效率、灵活性和可配置性等方面的差异。 首先,让我们深入了解WCF的自定义绑定。自定义绑定是WCF的一项重要特性,它...

    非常好的某网站性能测试用例

    同时,测试结果需与性能需求对比,找出性能瓶颈并提出优化建议。 【总结】 性能测试旨在确保系统在预期负载下能够高效、稳定地运行。对于某网站,测试用例设计需覆盖页面刷新、上传和下载等关键操作,通过改变并发...

    Linux 操作系统性能评测与测试指标浅析

    Linux操作系统性能评测与测试指标是评估其运行效率和稳定性的核心环节。在深入理解这些概念之前,首先要明白,性能测试的目的是评估系统的整体能力、验证其可靠性,发现系统的强项和弱项,以及为系统优化提供数据...

    理解了实现再谈网络性能.pdf

    5. 使用开源项目与资源:开发者可以利用开源社区中的资源,如张彦飞提到的Github项目,这些资源能为网络性能优化提供实战经验和工具支持,帮助开发者更快地定位问题并寻找解决方案。 文章中虽然没有直接提到TCP协议...

    web网站性能测试工具

    通过对网站的响应时间、吞吐量、资源利用率等关键指标进行监测与分析,可以有效识别并解决可能存在的性能瓶颈问题。 #### 二、常见的Web网站性能测试工具介绍 ##### 1. **JMeter** JMeter是一款开源的性能测试...

    dubbo入门实例及性能测试

    在本实例中,我们将探讨如何入门Dubbo并进行性能测试,特别是对比Dubbo集群与在同一JVM内运行的非Dubbo服务的性能差异。 1. **Dubbo入门** - **安装配置**:首先,你需要安装Java环境,并在项目中引入Dubbo依赖。...

    oracle性能测试 -

    4. 稳定性测试:长时间运行系统,检查其稳定性和持久性。 三、性能测试工具 1. Oracle SQL*Plus:内置的命令行工具,用于执行SQL查询并分析执行计划。 2. Oracle Enterprise Manager Cloud Control:集成了全面的...

Global site tag (gtag.js) - Google Analytics