java--thread:共享全局变量的加锁机制,不可避免造成死锁
scala--actor
在做分布式的时候一定不要有共享全局的变量,更不能做加锁机制。
每个actor都和公司的一个员工一样,都有自己的循环器,每天循环自己的邮箱查看邮件,回复邮件作出应答。
!:异步的,给actor发完信息后不会继续等回答,会继续往下执行
!?:给actor发完信息后会等对方回答,没有回答就一直等待hung住
!!:发送完之后,同时希望能够得到结果
scala> import scala.actors.Actor
import scala.actors.Actor
scala> class HiActor extends Actor{ --相当于Thread
| def act(){ --相当于run
| while(true){
| receive{
| case name: String => println(name)
| }
| }
| }
| }
defined class HiActor
scala>
scala> val actor = new HiActor
actor: HiActor = HiActor@75d29995
scala> actor.start()
res20: scala.actors.Actor = HiActor@75d29995
scala> actor ! "Spark" --给actor发送信息:"Spark"
scala> Spark
scala> actor ! "Scala"
Scala
-------------------------------------------
scala> case class Basic(name: String,age: Int)
defined class Basic
scala> case class Worker(name: String,age: Int)
defined class Worker
scala> class BasicActor extends Actor{
| def act(){
| while(true){
| receive{
| case Basic(name,age) => println("Basic Info:" + name + ":" + age)
| case Worker(name,age) => println("Worker Info:" + name + ":" + age)
| }
| }
| }
| }
defined class BasicActor
scala> val b = new BasicActor
b: BasicActor = BasicActor@43aad2f4
scala> b.start
res23: scala.actors.Actor = BasicActor@43aad2f4
scala> b ! Basic("Scala",13)
Basic Info:Scala:13
scala> b ! Worker("Spark",7)
Worker Info:Spark:7
scala> val a = b !! Worker("Spark",7) --!!:发送完之后,同时希望能够得到结果
a: b.Future[Any] = <function0>
scala> Worker Info:Spark:7
scala> b !? Worker("Spark",7) --一直在等待
Worker Info:Spark:7
scala 多线程actor
最新推荐文章于 2022-05-21 17:42:48 发布