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 ...
随机推荐
- docker compose,link,Odoo
1.报错: /usr/bin/docker-current: Error response from daemon: driver failed programming external connec ...
- .NET之特性和属性(转)
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- MyBatis+Spring实现基本CRUD操作
一.MyBaits介绍 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的X ...
- Ubuntu下kafka集群环境搭建及测试
kafka介绍: Kafka[1是一种高吞吐量[2] 的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 ...
- svn备份
公司的svn体量很大,要是一不小心误删了SVN版本库,就要哭了,所以有了下面的备份脚本 #每个版本库完全备份 #!/bin/bash SOUR_SVN="/var/www/svn" ...
- 【hdu4436/LA6387-str2int】sam处理不同子串
题意:给出n个数字,数字很长,用字符串读入,长度总和为10^5.求这n个字符串的所有子串(不重复)的和取模2012 . 例如字符串101,和就是1+10+101=112. 题解: 就是求不同的子串连成 ...
- 【bzoj3510】首都 LCT维护子树信息(+启发式合并)
题目描述 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消失, ...
- 用树莓派做FTP服务器
我为了传输文件方便,所以先简单的做了一个匿名ftp服务器 首先要下载ftp服务器软件 输入 sudo apt-get install vsftpd 安装vsftp 然后编辑 /etc/vsftp.co ...
- 原生sql和django的事务控制
def test(request): with connections['default'].cursor() as c: try: with transaction.atomic(using='de ...
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
文本处理三剑客:1.grep 2.sed 3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n :显示行号:-o :只显示匹配的内容-q :静默模式,没有任何输出,得用e ...