同步与事务 -试谈"问题的问题"的解决方案

面向对象编程有两个问题要解决: 一是多线程(注意不是并发), 一是语义环境. 但实际上第一个问题也能够归到第二个问题中去一块儿解决. 由于多线程自己并非真正的问题, 真正的问题自始至终是语义意义上的问题. 程序员

要是一件东西语义上没有问题, 为何我要去理会它? 为何我要去解决它? 编程

若是我有三个对象A, B, C. 这三个对象组成个人状态. 那么有两种办法解决它的数据完整性问题: 缓存

1, 同步; 安全

2, 事务. 多线程

同步指使用synchronized或者锁来同步全部对它们的访问. 可是若是是事务, 它就能够不一样步. 由于它会经过缓存的方式解决数据的冲突问题. 最后可能会有些事务失败, 若是不是选择彻底可序列化的事务级别的话. 并发

同步是语义相关的. 不是变量相关的. 同步的时候不能只看着机器或者说内存状态, 你要盯着的是语义状态. 语义状态的意思是, 也许原本在代码上绝不相关的两个东西, 可是它们在语义上是有联系的, 是受彼此约束的, 或者说共同组成另外一个状态. 这样子的话, 你的同步就可能 不受线程安全的控制, 会满天飞, 飞获得处都是. 线程

这样子,你怎么办? 对象

因此说JAVA的语义层次要尽快提上来. 使用机器是最大的问题. 全部的同步, 锁根本不可能解决问题, 你要解决语义级的问题, 就必须真的去尝试解决它. 你变成再怎样的机器高手, 也没有用. 事务

问题就是问题. 问题有问题的特征, 解决它要用问题相关的手段而不是机器相关的手段. 机器相关的手段只能解决机器的问题, 解决不了问题的问题. 内存

设想你有一个彻底的语义系统, 程序写起来会有多么轻松.

从这个角度讲, FP不是一件坏事, 至少他作到了部分意义上的负责. 对程序员负责, 对用户负责, 对计算负责. 总之它负责了一些东西. 相对于状态式编程 中的直接把机器丢给客户, 丢给程序员的作法, 它"要脸"多了.

那些看我博客的人, 大家仍是不要看了. 我建议大家不要看. 我这我的很蠢, 说的话也很蠢, 不像大家那么高科技. 因此不要丢你的脸, 也不要丢你本身的脸(看一个比本身更差的人的东西, 是否是丢脸啊).

我就历来只看比我写得更好的东西. 除非有时候须要抄点东西. 但我敢认可 我抄东西, 我已经看清楚的东西, 我就不肯意花时间去弄来弄去, 我就喜欢直接COPY. 由于我在意的不是作法, 而是方法.

因此你不要看啦, 不再要看啦. 求求你啦!

相关文章
相关标签/搜索