Java遊戲服務器4

1)消息識別器:
    根據消息號,創建一個Builder。

2)javassist:動態修改字節碼。==》用於ormtest
    原生反射很慢,那我可以用javaassist來加速

    
3)一些框架沒有實現類,是怎麼實現出來的。

4)多線程與IO

5)先講解移動。
    攻擊的話,就是涉及到多線程的問題。

6)A和B同時攻擊C時,A和B 分別在自己的線程,因此有併發訪問安全的問題。


7)多個線程操作同一份數據,數據不一致的問題。解決方案
    (1)加鎖 synchronized:
            一個減血的函數暫時沒有問題: 


            執行效率不高甚至都不是關鍵的。

            但是如果有別的函數呢? attkUser(User user); 這種帶來了死鎖。 互砍造成了死鎖!!!
                jps  ==》 得到進程及其對應的pid,,如自己Server的pid。
                jstack 7996  ==》得到死鎖信息。

                數據不一致,和死鎖。

                減少鎖的粒度,可以減少死鎖(並非避免死鎖)。 但是開發困難,與業務邏輯重合了。

    (2)髒讀:多線程操作同一份數據,髒讀。
                volatile也不行。它只保證2個線程是可見的。 不能是原子的。

    
    (3)atomic:
         單個操作,能保證線程安全,用cas原語保證,但是十分臃腫! 道具的id,任務的狀態。。。對象太大,太臃腫的。
             但是,同時操作a和b,則依然是數據不一致的問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章