当多线程访问内存表中同一个对象时,如何保证对象的完整性。
比如:T1和T11线程先后在内存表中取得一个对象User,T1线程改变了User对象,先保存到内存表中,T11对象又改变了对象的状态,保存到内存表中,此时T11的改变会覆盖T1的改变。
使用以下方法来同步
1.不要new HashMap,而是使用new ConcurrentHashMap,后者可以查API文档了解更多。
如果只是1种并发线程访问的话,可以加同步锁,但是如果是多种呢?如果你的内存表不是如上的可并发的ConcurrentHashMap,而是Jredis呢?
2.在每次Jredis.set(key,value);的时候,合并一下两个对象,同时加上锁。
比如:T1和T11线程先后在内存表中取得一个对象User,T1线程改变了User对象,先保存到内存表中,T11对象又改变了对象的状态,保存到内存表中,此时T11的改变会覆盖T1的改变。
使用以下方法来同步
1.不要new HashMap,而是使用new ConcurrentHashMap,后者可以查API文档了解更多。
如果只是1种并发线程访问的话,可以加同步锁,但是如果是多种呢?如果你的内存表不是如上的可并发的ConcurrentHashMap,而是Jredis呢?
2.在每次Jredis.set(key,value);的时候,合并一下两个对象,同时加上锁。