diff --git a/fightmanager/src/main/java/com/ljsd/fight/CheckFight.java b/fightmanager/src/main/java/com/ljsd/fight/CheckFight.java index e3b50c852..6a72eb61f 100644 --- a/fightmanager/src/main/java/com/ljsd/fight/CheckFight.java +++ b/fightmanager/src/main/java/com/ljsd/fight/CheckFight.java @@ -10,13 +10,14 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; +import java.util.concurrent.atomic.AtomicInteger; public class CheckFight { private static final Logger LOGGER = LoggerFactory.getLogger(CheckFight.class); private ThreadLocal localTransCoderObj = new ThreadLocal(); - + private ThreadLocal localVersion = new ThreadLocal<>(); // private String luaFileName = null; private CheckFight(){} @@ -29,7 +30,7 @@ public class CheckFight { return CheckFight.Instance.instance; } - private int hotFixVersion = 0; + private AtomicInteger hotFixVersion = new AtomicInteger(); static class LuaHotFixBean{ private int version; @@ -42,21 +43,22 @@ public class CheckFight { public void luaHotFix(){ LuaHotFixBean luaHotFixBean = STableManager.getJsonFilePathInJsonConf("lua-hotfix.json", LuaHotFixBean.class); - if(luaHotFixBean!=null && hotFixVersion < luaHotFixBean.getVersion()){ - LOGGER.info("the curhotFixVersion={},the new hotFixVersion={} will hotfix ",hotFixVersion,luaHotFixBean.getVersion()); - init(); + if(luaHotFixBean!=null && hotFixVersion.get() < luaHotFixBean.getVersion()){ + LOGGER.info("the curhotFixVersion={},the new hotFixVersion={} will hotfix ",hotFixVersion.get(),luaHotFixBean.getVersion()); + //init(); LOGGER.info("the luahotfix done"); - hotFixVersion = luaHotFixBean.getVersion(); + hotFixVersion.set(luaHotFixBean.getVersion()); + //tofix 不是原子操作 this.localTransCoderObj = new ThreadLocal(); } } - public void init(){ - LuaHotFixBean luaHotFixBean = STableManager.getJsonFilePathInJsonConf("lua-hotfix.json", LuaHotFixBean.class); - if(luaHotFixBean!=null) { - hotFixVersion = luaHotFixBean.getVersion(); - } - } +// public void init(){ +// LuaHotFixBean luaHotFixBean = STableManager.getJsonFilePathInJsonConf("lua-hotfix.json", LuaHotFixBean.class); +// if(luaHotFixBean!=null) { +// hotFixVersion = luaHotFixBean.getVersion(); +// } +// } public static String getPath(String prefixDir, String... filePath) throws IOException { @@ -117,13 +119,14 @@ public class CheckFight { public LuaValue getTransCoderObj(){ LuaValue transCoderObj = localTransCoderObj.get(); - if(transCoderObj == null){ + if(transCoderObj == null||localVersion.get()!=hotFixVersion.get()){ String luaFileName = null; try { luaFileName = getPath("luafight/BattleMain.lua"); } catch (IOException e) { e.printStackTrace(); } + localVersion.set( hotFixVersion.get()); Globals globals = JsePlatform.debugGlobals(); transCoderObj = globals.loadfile(luaFileName).call(); localTransCoderObj.set(transCoderObj);