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 ...
随机推荐
- iebackground+icon图标兼容
<!DOCTYPE > <html> <head> <title>zepto</title> <meta name="nam ...
- Linux命令的返回值
转摘自:http://hi.baidu.com/suchshow/item/230255b6caab369218469732 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令, ...
- SpringMVC学习 -- REST
REST:表现层状态转化. REST 是目前最流行的一种互联网软件架构.他结构清晰.符合标准.易于理解.扩展方便 , 所以正得到越来越多网站的采用. 状态转化:浏览器 form 表单只支持 GET 和 ...
- HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTup
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.t ...
- 转:java 帐号激活与忘记密码 实例
原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活 在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激 ...
- [BZOJ1036][ZJOI2008]树的统计Count 解题报告|树链剖分
树链剖分 简单来说就是数据结构在树上的应用.常用的为线段树splay等.(可现在splay还不会敲囧) 重链剖分: 将树上的边分成轻链和重链. 重边为每个节点到它子树最大的儿子的边,其余为轻边. 设( ...
- DB 基本性能指标
DB: •500K I/O limit with kill(5M I/O limit for DWS) •10,000 return row limit with kill •30 seconds p ...
- [Leetcode Week10]Minimum Time Difference
Minimum Time Difference 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-time-difference/desc ...
- PL/SQL 02 声明变量 declare
语法:identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr] identifier:用于指定变量或常量的名称.CONSTANT:用于 ...
- servlet(3) - servlet知识点 - 小易Java笔记
1.servlet的生命周期 (1)容器最终要调用service方法为客户进行服务.(此处“容器”指java运行的环境,tomcat是jsp/servlet的容器) ==> 在内存中一个Serv ...