归纳避免同步锁的几种方式

  • 时间:
  • 浏览:4
  • 来源:5分快乐8_5分11选5

单守护线程多任务:每个任务的执行只有被打断。 守护线程监听各种事件并提供相应的回调函数

对象之间通过消息交互,对象内部内部结构不保存状态。典型的例子:Actor模型。

通过消息传递状态

通过函数调用栈传递对象引用

当对象状态占据 改变时,重新生成对象。在javascript提供创建不可变对象的接口,但可不前要使用immutable.js或seamless-immutable创建不可变对象。

JDK的java.util.ConcurrentHashMap 而是 使用这个思想来实现的。 详情见 . 此妙招只有处理锁,但可不前要提高并发量

典型例子:nodejs

肯能对象内部内部结构不维护状态,自然就只有并发修改问題。肯能一个多多多 服务器守护线程不保存用户的状态,只有就可不前要很容易进行横向扩容。

使用单守护线程异步

使用不变对象

在并发编程中, 老要前要对共享数据(对象)加进去去同步锁, 但同步锁会意味守护线程性能下降。下面总结了其他处理同步锁的妙招:

对集合进行分区

对象时会堆空间分配,并可不前要被多个守护线程引用。肯能对象引用只在函数调用栈之间传递,则只有当前守护线程能引用该对象

无状态