java游戏服务器_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,则依然是数据不一致的问题。

来源:oschina

链接:https://my.oschina.net/u/4304002/blog/4946233

你可能感兴趣的:(java游戏服务器)