Scala实战高手****第17课:Scala并发编程实战及Spark源码阅读
package com.wanji.scala.test import javax.swing.text.AbstractDocument.Content import scala.actors.Actor case class Hello(name:String,content:String,send:Actor)
case class HelloBack(name:String,content: String,sender:Actor) /**
* 描述:Scala编程实战
* 作者: sunrunzhi
* 时间: 2018/11/22 09:23
*/ class HelloActor extends Actor{
var counter=0 override def act(): Unit ={
while(true) {
receive{
case content:String=>println(content)
case Hello(name,content,sender)=>{
println("HelloActor:"+name+" content:"+content+counter)
counter+=1
Thread.sleep(3000)
sender ! HelloBack(name,content,this)
}
} }
}
} class HelloBackActor(val helloActor: Actor) extends Actor{
var counter=0 override def act(): Unit = {
helloActor ! Hello("Spark","Love is here",this)
while (true){
receive{
case content:String=>println("Message:"+content)
case HelloBack(name,content,sender)=>{
println("HelloBackActor:"+name+" content:"+content+counter)
counter+=1
Thread.sleep(3000)
sender ! Hello(name,content,this)
}
}
}
}
} object C17 { def main(args: Array[String]): Unit = {
val helloActor=new HelloActor
helloActor.start()//启动start来接收消息 val helloBackActor=new HelloBackActor(helloActor)
helloBackActor.start() var counter=0
while(true){
helloActor ! "Life is short,you need Spark!!!"+counter
counter +=1
Thread.sleep(3000) }
} }
package com.wanji.scala.test import javax.swing.text.AbstractDocument.Content import scala.actors.Actor case class Hello(name:String,content:String,send:Actor)
case class HelloBack(name:String,content: String,sender:Actor) /**
* 描述:Scala编程实战
* 作者: sunrunzhi
* 时间: 2018/11/22 09:23
*/ class HelloActor extends Actor{
var counter=0 override def act(): Unit ={
while(true) {
receive{
case content:String=>println(content)
case Hello(name,content,sender)=>{
println("HelloActor:"+name+" content:"+content+counter)
counter+=1
Thread.sleep()
sender ! HelloBack(name,content,this)
}
} }
}
} class HelloBackActor(val helloActor: Actor) extends Actor{
var counter=0 override def act(): Unit = {
helloActor ! Hello("Spark","Love is here",this)
while (true){
receive{
case content:String=>println("Message:"+content)
case HelloBack(name,content,sender)=>{
println("HelloBackActor:"+name+" content:"+content+counter)
counter+=1
Thread.sleep()
sender ! Hello(name,content,this)
}
}
}
}
} object C17 { def main(args: Array[String]): Unit = {
val helloActor=new HelloActor
helloActor.start()//启动start来接收消息 val helloBackActor=new HelloBackActor(helloActor)
helloBackActor.start() var counter=0
while(true){
helloActor ! "Life is short,you need Spark!!!"+counter
counter +=1
Thread.sleep() }
} }
Scala实战高手****第17课:Scala并发编程实战及Spark源码阅读的更多相关文章
- 【并发编程】【JDK源码】J.U.C--AQS 及其同步组件(2/2)
原文:慕课网高并发实战(七)- J.U.C之AQS 在[并发编程][JDK源码]AQS (AbstractQueuedSynchronizer)(1/2)中简要介绍了AQS的概念和基本原理,下面继续对 ...
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- 【并发编程】【JDK源码】J.U.C--AQS (AbstractQueuedSynchronizer)(1/2)
J.U.C实现基础 AQS.非阻塞数据结构和原子变量类(java.util.concurrent.atomic包中的类),concurrent包中的基础类都是使用这种模式来实现的.而concurren ...
- Scala实战高手****第6课 :零基础实战Scala集合操作及Spark源码解析
本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 --------------------------------------------------------------- ...
- Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析
/** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一 ...
- 【并发编程】【JDK源码】CAS与synchronized
线程安全 众所周知,Java是多线程的.但是,Java对多线程的支持其实是一把双刃剑.一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题.线程安全性可能是非常复杂的,在没有充足的同 ...
- 【并发编程】【JDK源码】J.U.C--线程池
原文:慕课网实战·高并发探索(十四):线程池 Executor new Thread的弊端 每次new Thread 新建对象,性能差. 线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多 ...
- Java并发编程笔记之ThreadLocalRandom源码分析
JDK 并发包中 ThreadLocalRandom 类原理剖析,经常使用的随机数生成器 Random 类的原理是什么?及其局限性是什么?ThreadLocalRandom 是如何利用 ThreadL ...
- 多线程高并发编程(8) -- Fork/Join源码分析
一.概念 Fork/Join就是将一个大任务分解(fork)成许多个独立的小任务,然后多线程并行去处理这些小任务,每个小任务处理完得到结果再进行合并(join)得到最终的结果. 流程:任务继承Recu ...
随机推荐
- javascript学习教程
我来班门弄斧一下吧,把我JavaScript学习过程中常去的一些网站分享给大家: =========================增加================================ ...
- centos 下构建lamp环境
构建准备: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp - ...
- vueJS 一天上手到精通
近来用vuejs, vuejs和angular的不同在于它直接暴露了一个构造函数,而后在里面写各种config, 和模板再相对,而且vuejs也有对应的模板双向绑定机制,这样就使开发非常简单容易,虽然 ...
- 河南省第十届省赛 Binary to Prime
题目描述: To facilitate the analysis of a DNA sequence, a DNA sequence is represented by a binary num ...
- 在SDK中使用Ubuntu仿真器
Ubuntu仿真器是开发过程中非常有用,尤其是在没有任何Ubuntu设备时.在将仿真器附加到SDK后,你便可以在上面运行程序,安装点击数据包,等等,类似在物理设备上的操作一样. 在这里,您可以了解如何 ...
- linux下rm命令删除文件名中包含特殊字符的文件【转】
转自:http://blog.itpub.net/143526/viewspace-1060083/ 1. 删除带“-”的文件名的方法 2. 删除包含其它特殊字符的文件 3. 删除系统打不出的乱码文件 ...
- url 拼接的一个模块furl
from furl import furl getlongtexturl="https://weibo.com/p/aj/mblog/getlongtext" params={ & ...
- snakes
原地址 讨论区 Changing 算法一 我会随机! 由于我忘了设置多组数据,期望得分0至100. 算法二 我会模拟! 复杂度\(O(t^2)\),期望得分60. 但是很多人忘记题目给出的是环形-- ...
- SQL语句中的select高级用法
#转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...
- 细说robots.txt
robots.txt Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...