我们可以强制java接口实现超时吗?

我们可以强制java接口实现超时吗?,java,Java,我正在开发一个基于java的游戏服务器。我在服务器端的设计如下。 RuleEnforcer被传递到一个IPlayer列表中,并启动与玩家的通信。IPlayers是一个接口,我设想实现一个用于测试的虚拟播放器,“智能”播放器,以及最终与远程客户端UI接口交互的播放器。在RuleEnforcer中,当调用播放器方法时,需要确保该方法(按时)返回。例如: giveACard没有返回类型,每位玩家只需保存卡并立即返回即可。但是,如果一个玩家实现在方法调用上休眠,那么游戏就被卡住了。 在我的代码中如何解释

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

giveACard没有返回类型,每位玩家只需保存卡并立即返回即可。但是,如果一个玩家实现在方法调用上休眠,那么游戏就被卡住了。
在我的代码中如何解释这一点?我能想到的一种方法是在不同的线程中调用播放器交互,并使用wait。是否有任何设计适用于此场景,或者我的方法是否错误

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

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

public <T> T newProxy(T target,
             Class<T> interfaceType,
             long timeoutDuration,
             TimeUnit timeoutUnit)
public T newProxy(T目标,
类接口类型,
超时时间长,
时间单位(超时单位)
然后打电话超时

callWithTimeout
public <T> T callWithTimeout(Callable<T> callable,
                    long timeoutDuration,
                    TimeUnit timeoutUnit,
                    boolean amInterruptible)
callWithTimeout
公用T callWithTimeout(可调用、可调用、,
超时时间长,
时间单位时间单位,
布尔值(可中断)
供参考使用…新代理

public <T> T newProxy(T target,
             Class<T> interfaceType,
             long timeoutDuration,
             TimeUnit timeoutUnit)
public T newProxy(T目标,
类接口类型,
超时时间长,
时间单位(超时单位)

您是在线程中运行还是在主线程中运行?谢谢。这篇文章似乎就是为了这个目的而写的。番石榴和他们漂亮的小解决方案:)
public <T> T newProxy(T target,
             Class<T> interfaceType,
             long timeoutDuration,
             TimeUnit timeoutUnit)