`
carywei
  • 浏览: 191945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

超时机制

 
阅读更多

    static final int OP_PENDING = 0;
    static final int OP_ACKNOWLEDGED = 1;
    static final int OP_TIMEOUT = -1;

 

 final Object mCurrentOpLock = new Object();

 

 

 

//代码调用就开始等待 在while中等待,直到 超时或者代码执行已经返回。

 boolean waitUntilOperationComplete(int token) {
        int finalState = OP_PENDING;
        synchronized (mCurrentOpLock) {
            try {
                while ((finalState = mCurrentOperations.get(token, OP_TIMEOUT)) == OP_PENDING) {
                    try {
                        mCurrentOpLock.wait();
                    } catch (InterruptedException e) {}
                }
            } catch (IndexOutOfBoundsException e) {
                // the operation has been mysteriously cleared from our
                // bookkeeping -- consider this a success and ignore it.
            }
        }
        mBackupHandler.removeMessages(MSG_TIMEOUT);
        if (DEBUG) Slog.v(TAG, "operation " + Integer.toHexString(token)
                + " complete: finalState=" + finalState);
        return finalState == OP_ACKNOWLEDGED;
    }

 

 

 

public void opComplete(int token) {
        synchronized (mCurrentOpLock) {
            if (DEBUG) Slog.v(TAG, "opComplete: " + Integer.toHexString(token));
            mCurrentOperations.put(token, OP_ACKNOWLEDGED);
            mCurrentOpLock.notifyAll();
        }
    }

 

 

private class BackupHandler extends Handler {
        public BackupHandler(Looper looper) {
            super(looper);
        }

 

      case MSG_TIMEOUT:
            {
                synchronized (mCurrentOpLock) {
                    final int token = msg.arg1;
                    int state = mCurrentOperations.get(token, OP_TIMEOUT);
                    if (state == OP_PENDING) {
                        if (DEBUG) Slog.v(TAG, "TIMEOUT: token=" + token);
                        mCurrentOperations.put(token, OP_TIMEOUT);
                    }
                    mCurrentOpLock.notifyAll();
                }
                break;
            }
}

 

 

 

 

 

 

分享到:
评论

相关推荐

    Dubbo超时机制导致的雪崩连接

    ### Dubbo超时机制导致的雪崩连接问题分析 #### 一、背景介绍 在分布式系统中,服务间调用非常频繁,为了提高系统的稳定性和可用性,通常会采用诸如Dubbo这样的微服务框架来进行服务治理。Dubbo作为一款高性能、轻...

    ZooKeeper会话超时以及重连机制.pdf

    #### 一、ZooKeeper会话超时机制 在分布式系统中,ZooKeeper作为一款流行的协调服务框架,为开发者提供了高效且可靠的协调服务。其中,会话管理是ZooKeeper的重要组成部分之一。本文将详细介绍ZooKeeper中的会话...

    Android超时处理

    下面将详细讲解这一主题,包括网络连接的检测、请求的成功与失败判断、超时机制的理解以及如何在实际项目中应用。 首先,我们需要判断网络连接的状态。Android提供了多种方法来检查设备是否已连接到网络,例如通过`...

    dotnet 6 使用 HttpClient 的超时机制.rar

    本教程将详细讲解如何在.NET 6中利用HttpClient设置超时机制,确保你的请求处理在预设时间内完成,避免程序因长时间等待响应而卡死。 HttpClient类提供了发送HTTP请求的能力,同时允许开发者配置请求的多个方面,...

    串口帮助类实现超时机制.zip

    在IT行业中,串口通信是一种常见且重要的通信方式,尤其在设备间的数据交换、嵌入式系统以及上位机与下位机...同时,由于采用了超时机制,可以有效地防止因网络延迟或其他原因导致的通信阻塞,提高了整体系统的可靠性。

    揭秘JDBC超时机制完整版

    在本文中,我们将深入探讨JDBC的超时机制,以及在实际应用中可能出现的问题和解决方案。 首先,我们来看一个真实的案例:在DDoS攻击后,尽管网络恢复,但业务系统仍然无法正常工作,这是因为JDBC API调用出现了问题...

    超时机制、断路器模式简介.mmap

    超时机制、断路器模式简介

    在 STM32微控制器 上演示了用于以循环模式配置的外设 DMA 的高效 DMA 超时机制_C语言_代码_相关文件_下载

    此示例介绍如何为配置为循环模式的外设 DMA 实现高效的 DMA 超时机制。 目录 描述 执行 源代码组织 这个怎么运作 参考 描述 为外设(例如 UART)实施 DMA 可以显着提高性能,同时减少 MCU(微控制器)内核的工作...

    串口使用超时判断接收数据帧

    - **鲁棒性强**:通过设置超时机制,即使帧尾丢失也能及时终止等待,避免长时间的无效等待。 - **简化中断处理**:无需复杂地根据帧格式判断帧尾,降低了中断服务程序的复杂度。 **缺点**: - **实时性较差**:...

    基于Netty实现的命令行斗地主游戏,新增癞子模式,德州扑克,增加超时机制,完美复现欢乐斗地主,欢迎体验在线版

    基于Netty实现的命令行斗地主游戏,新增癞子模式,德州扑克,增加超时机制,完美复现欢乐斗地主,欢迎体验在线版

    python脚本设置超时机制系统时间的方法

    ### Python脚本设置超时机制系统时间的方法 #### 概述 在开发自动化脚本或进行网络编程时,经常会遇到需要获取准确的时间戳来进行日期时间校准的需求。Python提供了多种方式来实现这一功能,其中一种常见的方式是...

    基于心跳超时机制的Hadoop实时容错技术 (2015年)

    针对官方的Hadoop软件中提供的节点心跳超时容错...在实现了公平超时机制的Hadoop上运行大约345 s的短作业时,当出现TaskTracker节点故障时作业完成时间平均大约节省了44%,与自适应超时机制相比,作业完成时间大约节

    Java线程超时监控

    此外,对于长时间运行的任务,可以考虑采用中断机制,使任务能够定期检查是否被中断,以便于在超时后能够及时清理资源并终止执行。 总之,Java提供了多种方法来监控和管理线程的超时,包括使用`Future`、`...

    php脚本运行时的超时机制详解

    在PHP开发过程中,有时会遇到脚本运行超时的问题,这主要是由于PHP的超时机制在起作用。本文将深入探讨这一机制,包括超时配置的设置和在处理请求时如何控制超时。 PHP的超时机制主要包括两个关键配置:`max_input_...

    Python grpc超时机制代码示例

    在gRPC框架中,超时机制是至关重要的,它允许客户端在等待服务器响应时设置一个时间限制。当这个时间限制(通常称为超时)到期,客户端可以选择终止请求并处理超时错误,而不是无限期地等待。在Python中,gRPC库提供...

    基于心跳超时机制的Hadoop实时容错技术

    本文探讨了Hadoop实时容错技术,并针对其心跳超时机制进行了改进,提出了公平心跳超时容错机制。在了解该技术之前,首先要了解Hadoop的基本原理及其心跳超时机制的作用。 Hadoop是一个开源的分布式存储与计算平台,...

    C# Socket连接请求超时机制实现代码分享

    在C#编程中,Socket连接请求超时机制是网络编程中的一个重要概念,尤其是在处理不可预知的网络状况时。默认情况下,.NET Framework的`System.Net.Sockets.TcpClient`和`System.Net.Sockets.Socket`类的`Connect`或`...

Global site tag (gtag.js) - Google Analytics