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作为一款高性能、轻...
下面将详细讲解这一主题,包括网络连接的检测、请求的成功与失败判断、超时机制的理解以及如何在实际项目中应用。 首先,我们需要判断网络连接的状态。Android提供了多种方法来检查设备是否已连接到网络,例如通过`...
本教程将详细讲解如何在.NET 6中利用HttpClient设置超时机制,确保你的请求处理在预设时间内完成,避免程序因长时间等待响应而卡死。 HttpClient类提供了发送HTTP请求的能力,同时允许开发者配置请求的多个方面,...
在IT行业中,串口通信是一种常见且重要的通信方式,尤其在设备间的数据交换、嵌入式系统以及上位机与下位机...同时,由于采用了超时机制,可以有效地防止因网络延迟或其他原因导致的通信阻塞,提高了整体系统的可靠性。
在本文中,我们将深入探讨JDBC的超时机制,以及在实际应用中可能出现的问题和解决方案。 首先,我们来看一个真实的案例:在DDoS攻击后,尽管网络恢复,但业务系统仍然无法正常工作,这是因为JDBC API调用出现了问题...
超时机制、断路器模式简介
此示例介绍如何为配置为循环模式的外设 DMA 实现高效的 DMA 超时机制。 目录 描述 执行 源代码组织 这个怎么运作 参考 描述 为外设(例如 UART)实施 DMA 可以显着提高性能,同时减少 MCU(微控制器)内核的工作...
- **鲁棒性强**:通过设置超时机制,即使帧尾丢失也能及时终止等待,避免长时间的无效等待。 - **简化中断处理**:无需复杂地根据帧格式判断帧尾,降低了中断服务程序的复杂度。 **缺点**: - **实时性较差**:...
### Python脚本设置超时机制系统时间的方法 #### 概述 在开发自动化脚本或进行网络编程时,经常会遇到需要获取准确的时间戳来进行日期时间校准的需求。Python提供了多种方式来实现这一功能,其中一种常见的方式是...
#### 一、ZooKeeper会话超时机制 在分布式系统中,ZooKeeper作为一款流行的协调服务框架,为开发者提供了高效且可靠的协调服务。其中,会话管理是ZooKeeper的重要组成部分之一。本文将详细介绍ZooKeeper中的会话...
针对官方的Hadoop软件中提供的节点心跳超时容错...在实现了公平超时机制的Hadoop上运行大约345 s的短作业时,当出现TaskTracker节点故障时作业完成时间平均大约节省了44%,与自适应超时机制相比,作业完成时间大约节
此外,对于长时间运行的任务,可以考虑采用中断机制,使任务能够定期检查是否被中断,以便于在超时后能够及时清理资源并终止执行。 总之,Java提供了多种方法来监控和管理线程的超时,包括使用`Future`、`...
在PHP开发过程中,有时会遇到脚本运行超时的问题,这主要是由于PHP的超时机制在起作用。本文将深入探讨这一机制,包括超时配置的设置和在处理请求时如何控制超时。 PHP的超时机制主要包括两个关键配置:`max_input_...
在gRPC框架中,超时机制是至关重要的,它允许客户端在等待服务器响应时设置一个时间限制。当这个时间限制(通常称为超时)到期,客户端可以选择终止请求并处理超时错误,而不是无限期地等待。在Python中,gRPC库提供...
本文探讨了Hadoop实时容错技术,并针对其心跳超时机制进行了改进,提出了公平心跳超时容错机制。在了解该技术之前,首先要了解Hadoop的基本原理及其心跳超时机制的作用。 Hadoop是一个开源的分布式存储与计算平台,...
在C#编程中,Socket连接请求超时机制是网络编程中的一个重要概念,尤其是在处理不可预知的网络状况时。默认情况下,.NET Framework的`System.Net.Sockets.TcpClient`和`System.Net.Sockets.Socket`类的`Connect`或`...