java游戏服务器——定义基础服务

这篇博客介绍了Java游戏服务器的基础服务接口定义,包括服务启动和结束的方法。此外,还展示了服务容器如何管理这些服务,以及如何在游戏启动服务中使用服务管理器,并在系统关闭时优雅地终止服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java游戏服务器架构中,请多多指教——manREDoo

定义接口

/**
 * 游戏基础服务
 *
 * @author : 钟满红
 */
public interface IService {
    /**
     * 服务启动
     *
     * @throws Exception 异常
     */
    public void startup() throws Exception;

    /**
     * 服务结束
     *
     * @throws Exception 异常
     */
    public void shutdown() throws Exception;
}

服务管理

/**
 * 游戏基础服务容器
 * @author : 钟满红
 */
public final class Services implements IService {

    private static final Map<Class<?>, IService> CACHE_SERVICE = new HashMap<>();

     /**
     * 基础服务对象注入
     */
    private static <T extends IService> T valueOf(T t) {
        CACHE_SERVICE.put(t.getClass(), t);
        return t;
    }

    public static Collection<IService> getAll() {
        return CACHE_SERVICE.values();
    }


    @Override
    public void startup() throws Exception {
        for (IService service : getAll()) {
            try {
                service.startup();
            } catch (Exception e) {
            }
        }
    }

    @Override
    public void shutdown() throws Exception {
        for (IService service : getAll()) {
            try {
                service.shutdown();
            } catch (Exception e) {
            }
        }
    }

}

服务启动

/**
 * <p>
 * 游戏启动服务
 * </p>
 *
 * @author : 钟满红
 */
public class GameApp {
    private static final Log log = Logs.gameLog;
    public static void main(String[] args) throws Exception {
        Services services = new Services();
        services.startup();
        Thread shutdownHook = new Thread(() -> {
            try {
                services.shutdown();
            } catch (Exception e) {
            }
        });
        shutdownHook.setDaemon(true);
        Runtime.getRuntime().addShutdownHook(shutdownHook);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值