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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值