java如何等待一段时间,然后返回默认值?
我有下面的代码,告诉我我的数据是部分的还是全部的。它在大多数情况下都很好用
public static String getTypeOfData {
DataType type = new SelectTypes().getType();
if (type == DataType.partial || type == DataType.temp) {
return "partial";
}
return "full";
}
但有时,这条线会一直挂着,永远等待。这段代码不在我的控制范围内,因为它是由其他团队开发的
我想做的是,如果这行DataType type = new SelectTypes().getType();
花费的时间超过10秒(或任何默认秒数),我的方法应该返回一个默认字符串,可以是partial
这有可能吗?任何例子都能帮助我更好地理解
我正在使用Java7
# 1 楼答案
如果您不太了解executor服务,那么实现这一点的最简单方法是使用线程等待和通知机制:
你可能需要做一些小的改变来让它工作,看起来更像是你可以使用一个作业来完成这项工作,而不是直接创建新的线程,以及根据你的需求进行一些其他的改变。但其主要思想仍然是,线程最多只需等待10秒即可获得响应
# 2 楼答案
{a1}提供了一些方法,允许您计划任务并使用超时选项调用它们。这应该满足您的要求,但是,请注意,因为终止线程可能会使应用程序处于不一致的状态
如果可能的话,你应该联系API的所有者,要求他们澄清或提供更多信息
编辑:根据你的评论,缓存是可能的吗?这意味着,在启动或其他某个点上,应用程序通过
SelectTypes
获取它们的类型并存储它们。假设这些不会经常更改,您可以定期保存/更新它们编辑2:根据你的另一条评论,我真的无法添加更多细节。您需要添加一个方法调用,该调用允许您的应用程序在启动时设置这些方法(这将取决于您使用的框架,如果有的话)
一种可能的方法是将包含
getTypeOfData()
方法的类设置为Singleton
。然后修改该类,将该信息作为其创建机制的一部分。最后,您将创建一个Map<String, Type>
,在其中输入所有类型。您可以使用getClass().getName()
填充地图的键,以及您现在对值部分所做的操作