java - 我们可以为java接口(interface)实现强制超时吗?

标签 java

我正在开发一个基于java的游戏服务器。我在服务器端的设计如下。
RuleEnforcer 在 IPlayer 列表中传递,并启动与玩家的通信。 IPlayers 是一个界面,我想象实现一个用于测试目的的虚拟播放器、一个“智能”播放器,以及一个最终与远程客户端 UI 界面交互的播放器。在RuleEnforcer中,当调用player方法时,需要确保该方法(按时)返回。例如:

for(player : players) {
    player.giveAcard(card);
}

giveACard没有返回类型,每个玩家只需保存卡片并立即返回即可。但如果玩家实现在方法调用上 hibernate ,游戏就会卡住。 我如何在我的代码中解释这一点?我能想到的一种方法是在不同的线程中调用玩家交互,并使用等待。有没有适合这种场景的设计,或者我的方法是错误的?

最佳答案

是的,你可以通过这种方式创建。 创建一个构造函数

SimpleTimeLimiter()

使用 Executors.newCachedThreadPool() 构造 TimeLimiter 实例来执行代理方法调用。 新代理的方法详细信息...

public <T> T newProxy(T target,
             Class<T> interfaceType,
             long timeoutDuration,
             TimeUnit timeoutUnit)

然后超时调用...

callWithTimeout
public <T> T callWithTimeout(Callable<T> callable,
                    long timeoutDuration,
                    TimeUnit timeoutUnit,
                    boolean amInterruptible)

供引用使用...新代理..

public <T> T newProxy(T target,
             Class<T> interfaceType,
             long timeoutDuration,
             TimeUnit timeoutUnit)

关于java - 我们可以为java接口(interface)实现强制超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855577/

相关文章:

java - 通用数组索引越界

java - Arduino ADK 无法通过 USB 从 Galaxy S II 接收数据

c# - Java 字 rune 字到 C# 字 rune 字

java - Aptana 如何激活预览

java - 如何防止Hibernate缓存?

java - 接收双引号内的 JSON 响应

java - Mac OS X 上有哪些版本的 Java?

java - 无法将静态字段从 java 更新到 mongo db

JAVA : How do I reduce the timer's time when the timer is running?

java - Play 应用程序上不可能的 NullPointerException