有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    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)