异步运行任务

你可以使用 runTaskAsynchronously 从主线程异步运行代码。这对于进行密集的数学运算或数据库操作很有用,因为它们会阻止主线程冻结(以及服务器滞后)。

很少有 Bukkit API 方法是线程安全的,因此如果从主线程异步调用,很多都会导致未定义的行为。

Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
    @Override
    public void run() {
        Bukkit.getLogger().info("This message was printed to the console asynchronously");
        //Bukkit.broadcastMessage is not thread-safe
    }
});