Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Cs Summary Reflection
提交
9f462e58
C
Cs Summary Reflection
项目概览
梦境迷离
/
Cs Summary Reflection
11 个月 前同步成功
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Cs Summary Reflection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9f462e58
编写于
10月 30, 2019
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Akka一些文章的修改,时间:2019-10-30 22:32:14
上级
7b0eb645
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
7 deletion
+10
-7
docs/_posts/2018-11-11-Scala的Future分析.md
docs/_posts/2018-11-11-Scala的Future分析.md
+1
-1
docs/_posts/2019-10-13-Akka-Actor与Java内存模型.md
docs/_posts/2019-10-13-Akka-Actor与Java内存模型.md
+9
-6
未找到文件。
docs/_posts/2018-11-11-Scala的Future
异步工具解决
.md
→
docs/_posts/2018-11-11-Scala的Future
分析
.md
浏览文件 @
9f462e58
---
---
title
:
Scala的Future
异步工具解决
title
:
Scala的Future
分析
categories
:
categories
:
-
Scala
-
Scala
tags
:
[
Scala
]
tags
:
[
Scala
]
...
...
docs/_posts/2019-10-13-Akka-Actor与Java内存模型.md
浏览文件 @
9f462e58
...
@@ -29,8 +29,8 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
...
@@ -29,8 +29,8 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
通过Akka中的Actors实现,有两种方法可以让多个线程在共享内存上执行操作:
通过Akka中的Actors实现,有两种方法可以让多个线程在共享内存上执行操作:
*
如果一个消息被发送给一个
参与者(例如由另一个actor)。在大多数情况下,消息是不可变的,但是如果消息不是构造正确的不可变对象,而没有“happens-before”规则,则接收方可能会看到部分初始化的数据结构,甚至可能是空值(Long/Double类型)
。
*
如果一个消息被发送给一个
Actor(例如由另一个actor)。在大多数情况下,消息是不可变的,但是如果消息不是构造正确的不可变对象,而没有“happens-before”规则,则接收方可能会看到部分初始化的数据结构,甚至可能是空值(Long/Double类型)
。
*
如果
参与者
在处理消息时更改其内部状态,并在稍后处理另一条消息时访问该状态。重要的是要认识到,对于Actor模型,您不能保证相同的线程将对不同的消息执行相同的actor。
*
如果
Actor
在处理消息时更改其内部状态,并在稍后处理另一条消息时访问该状态。重要的是要认识到,对于Actor模型,您不能保证相同的线程将对不同的消息执行相同的actor。
为了防止Actor的可见性和重新排序问题,Akka保证以下两个“happens before”规则:
为了防止Actor的可见性和重新排序问题,Akka保证以下两个“happens before”规则:
...
@@ -38,15 +38,15 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
...
@@ -38,15 +38,15 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
*
actor随后的处理规则:actor对一条消息进行处理,发生在同一actor处理下一条消息之前。
*
actor随后的处理规则:actor对一条消息进行处理,发生在同一actor处理下一条消息之前。
注:用外行的术语来说,这意味着当actor处理下一条消息时,对actor内部字段的更改是可见的。因此,actor中的字段不一定是易失性的或等效的。
注
意
:用外行的术语来说,这意味着当actor处理下一条消息时,对actor内部字段的更改是可见的。因此,actor中的字段不一定是易失性的或等效的。
这两条规则只适用于同一个actor实例,如果使用不同的actor,则无效。
这两条规则只适用于同一个actor实例,如果使用不同的actor,则无效。
### Future与Java内存模型
### Future与Java内存模型
在执行向其注册的任何回调之前,将完成“Future”的调用
。
Future的完成“happens before”对其注册的任何回调的调用被执行之前
。
我们建议不要关闭非最终字段
(在Java中为Final,在Scala中为Val)
,如果做如果选择关闭非最终字段,则必须标记它们。易挥发以使该字段的当前值在回调中可见。
我们建议不要关闭非最终字段
(在Java中为final,在Scala中为val)
,如果做如果选择关闭非最终字段,则必须标记它们。易挥发以使该字段的当前值在回调中可见。
如果在引用上关闭,还必须确保所引用的实例是线程安全的。我们强烈建议远离使用锁定的对象,因为它会带来性能问题,在最坏的情况下,会导致死锁。这就是同步的危险。
如果在引用上关闭,还必须确保所引用的实例是线程安全的。我们强烈建议远离使用锁定的对象,因为它会带来性能问题,在最坏的情况下,会导致死锁。这就是同步的危险。
...
@@ -54,7 +54,7 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
...
@@ -54,7 +54,7 @@ description: 主要介绍Lightbend平台的Akka与Java内存模型的关系
由于Akka在JVM上运行,仍然需要遵循一些规则。
由于Akka在JVM上运行,仍然需要遵循一些规则。
*
关闭内部
Actor状态并将其公开
给其他线程
*
关闭内部
actor状态并将其暴露
给其他线程
```
scala
```
scala
import
akka.actor.
{
Actor
,
ActorRef
}
import
akka.actor.
{
Actor
,
ActorRef
}
...
@@ -130,6 +130,9 @@ class MyActor(echoActor: ActorRef, cleanUpActor: ActorRef) extends Actor {
...
@@ -130,6 +130,9 @@ class MyActor(echoActor: ActorRef, cleanUpActor: ActorRef) extends Actor {
*
讯息应不可变,这是为了避免共享可变状态陷阱。
*
讯息应不可变,这是为了避免共享可变状态陷阱。
更多Future可以参考本博客的“Scala的Future分析”
或
[
programcreek中的例子
](
https://www.programcreek.com/scala/scala.concurrent.Future
)
[
文档
](
https://doc.akka.io/docs/akka/current/general/jmm.html
)
[
文档
](
https://doc.akka.io/docs/akka/current/general/jmm.html
)
*
使用搜狗翻译、百度翻译、谷歌翻译,仅供参考
*
使用搜狗翻译、百度翻译、谷歌翻译,仅供参考
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录